




免费预览已结束,剩余14页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在/osgi/docs/current/reference/html/testing.html【1】中对spring-osgi的测试介绍的应该说是比较到位,但如果对于第一次接触spring-osgi,而且还是刚接触maven的人来说,文章上面说的就有些含糊不清,甚至很多地方容易让人产生误解。让我们先了解一下 spring-osgi的测试集成体系: junit.framework.TestCase org.springframework.test.ConditionalTestCase org.springframework.test.AbstractSpringContextTests org.springframework.test.AbstractSingleSpringContextTests org.springframework.test.AbstractDependencyInjectionSpringContextTests org.springframework.osgi.test.AbstractOptionalDependencyInjectionTests org.springframework.osgi.test.AbstractOsgiTests org.springframework.osgi.test.AbstractConfigurableOsgiTests org.springframework.osgi.test.AbstractSynchronizedOsgiTests org.springframework.osgi.test.AbstractDependencyManagerTests org.springframework.osgi.test.AbstractOnTheFlyBundleCreatorTests org.springframework.osgi.test.AbstractConfigurableBundleCreatorTests 如果我们要写一个spring-osgi的测试类的话集成AbstractConfigurableBundleCreatorTests就可以了。 在这个集成体系当中有四个类比较重要AbstractConfigurableBundleCreatorTests,AbstractDependencyManagerTests,AbstractOsgiTests,AbstractDependencyInjectionSpringContextTests。其中, AbstractConfigurableBundleCreatorTests是我们写测试类的直接集成类;通过复写getTestBundlesNames()方法,来设定测试类所依赖的特定boundle包。boundle的名称在这里说明一下,要符合csv文件的格式规则利用,进行分割,一般分为3部分groupID,artifactid,versionNumber,三者缺一不可,更不要出错,否则将会出现相应的jar包找不到的情况。在getTestBundlesNames()方法中可能会依赖到一些我们自己些的一些boundle,那么此时,一定要将这个被依赖的boundle部署到我们的maven repository当中去,否则在运行测试时,将会报告找不到对应的boundle jar包。如何部署,参看相关maven教程中的deploy部分。部署完成后,在本机的maven repository 目录下面将会有相应boundle的jar文件放置其中。 另外在,该类中有三个成员变量,很重要: private static final String ROOT_DIR = root.dir;设定我们测试环境下所使用的class,xml,properties所在目录,默认为“file:./target/test-classes”,这与我们通常eclipse工程当中的build, bin作为class的输出目录不一样,这里一定注意,否则在运行时,会报告该目录不存在。如何解决我们下面会有说明。 static final String INCLUDE_PATTERNS = include.patterns;/设定文件的过滤规则默认为/*/*.class, /*/*.xml,/*/*.properties static final String MANIFEST = manifest;设定manifest.mf所在目录,默认为空。由程序自动创建。如果需要改变这三个变量的值,只需要在该类的目录下创建一个“类名-perties”的配置文件设定相应变量的值即可。如,我们的工程buildpath路径为build,那么在root.dir=build更改所制定的资源目录。AbstractDependencyManagerTests负责对测试环境所依赖的boundle负责加载管理,private static final String TEST_FRRAMEWORK_BUNDLES_CONF_FILE = /org/springframework/osgi/test/internal/perties;负责设置测试框架运行中所依赖的boundle jar包,该文件在spring-osgi-test-*.*.jar包中的对应的目录下面。该配置文件中指定了测试环境下所以来的bounle包。private ArtifactLocator locator = new LocalFileSystemMavenRepository();该成员是maven的本地boundle jar的加载工具。通过该类负责加载maven repository相应目录下面的boundle jar资源。具体实现可以参看ernal.LocalFileSystemMavenRepository的localMavenBundle()方法。 在这里提一下LocalFileSystemMavenRepository,该类实现 visioning.ArtifactLocator接口,在spring2.5中 现在只有一个实现类。LocalFileSystemMavenRepository的作用是根据artifactid和groupid加载maven中 repository的boundle。该类作为一个 org.springframework.osgi.test.AbstractDependencyManagerTests的成员些死在类当中,因 此,这也就是为什么在spring-osgi2.5当中我们必须使用maven的原因了。 AbstractOsgiTests为我们提供测试过程中的osgi运行环境。 AbstractDependencyInjectionSpringContextTests为我们提供了spring 中application context的支持。我们可以通过复写getConfigLocations()方法设定junit测试类所依存的application context。在使用spring-osgi的测试框架之前,必须要清楚明白maven的使用,否则就会产生一系列的boundle jar文件找不到的问题。在开始例子之前声明几个注意的地方: 1.spring-osgi是不依赖于具体的osgi平台的,也就是说,不需要先启动一个osgi环境在进行测试运行,因为在spring -osgi中,所有的junit 测试类均为org.springframework.osgi.test.AbstractOsgiTests该类的子类(但具体的junit测试类不直 接集成该类),该类为spring-osgi在测试声明周期内提供osgi工作环境。因此,在eclipse当中使用spring-osgi的测试类,同 使用一般的junit测试类完全相同。在文档【1】中所提及的the scenario supported by Spring-DM testing framework 指的是AbstractOsgiTests类中运行osgi环境的步骤,而这一切对我们osgi测试类来说都是透明的。 2.spring-osgi的测试类对maven的依赖性十分强,如果你打算使用spring-osgi提供给我们的测试类,那么就必须要使用到maven,因此,在开始之前请先去/和/下载maven和maven在ecplise当中的工具。具体如何配置使用,/Maven_2.0_Plugin_for_Eclipse.html这里提供了maven的视频教程。但有一点注意,视频上的内容和我们下载的插件是不一样的。插件的安装就不用多说了,不会的去网上搜索如何安装ecplise插件就行了。安装完成之后。点击eplise-windows-preferences 查看maven选项,其中offline为脱机运行,在第一次使用时不要勾掉,因为maven需要到远端的 repository中下载相应需要的jar包,之后的使用的时候把它个勾选上就可以了,否则速度会很慢。绿色的框框是用来对现在已经下载好的jar文件 创建索引用的。另外就是红框中就是设置maven的settings.xml和local repository的地方了。因为我用的是windows系统。这里面一定要注意了。maven在安装的时候默认的就将.m2目录安装到了用户的 document and settings 目录,但安装之后目录下面没有settings.xml文件,需要从maven包中拷贝一份到.m2目录下面。如果需要改变local repository的路径的话,则直接在settings.xml中直接修改。但本人强烈建议不要修改,否则当我们在运行junit测试类的时候将会出现找不到repository 目录的情况,因为spring-osgi测试类会去.m2目录下面去找repository的目录。当然也可以进行更改,只需要在每次运行程序的时候设置系统变量localRepository的值为你的repository的目录路径。 例子: 1.创建一个simple.service工程 2.设定工程的名字,源码目录,输出目录,该输出目录在测试时需要进行更改。选择目标平台为osgi framework standard 3.制定MANIFEST.mf文件中的属性,注意,这里的plug-in options 下面的选择框不要勾选,因为我们是利用spring dynamic module进行开发,不需要创建相应的Activator的实现4.在src目录下创建test目录作为测试代码目录,作为源码文件夹,工程目录结构图:5.将工程部署在maven管理之下,选择如图:6.输入maven的pom文件的属性描述,我们使用默认值。7.选择工程所依赖的jar包,如何在你的机器上已经安装了maven 并且repository中有相应的jar包,而且你清楚要导入的jar包时,可以通过add方式进行加入所依赖的jar包,这里我们通过编辑pom.xml文件来直接编辑工程的jar包依赖,点击finish。8.在工程的根目录下生成了一个pom.xml文件,该文件即为maven的工程管理文件。9.打开pom.xml 文件,在modelVersion标签前加入标签,表名该pom.xml的父pom.xml,这里我们制定的是spring-osgi作为工程的父pom.xml,这样做的好处是,可以不用在导入所有的依赖支撑jar包。spring-osgiorg.springframework.osgi1.0-rc110.另外还要加上对spring的依赖,osgi test的依赖,spring-test的依赖 org.springframework.osgispring-osgi-test$project.parent.versionprovidedorg.springframeworkspring-test$spring.maven.artifact.versionjartestorg.springframework.osgispring-osgi-core$project.parent.versionjarprovidedorg.springframeworkspring-core$spring.maven.artifact.versiontestorg.springframeworkspring-context$spring.maven.artifact.versiontestorg.springframeworkspring-beans$spring.maven.artifact.versiontest10,编辑完成后保存,此时如若在本机的 local repository 中没有对应的jar的话,那么maven将会连接远端的maven repository 对所需要的jar下载到本地的repository 当中来。11.完成之后,的classpath路径上将会出现maven的依赖包 12.打开工程的属性面板,修改outputfolder为target/test-classes。如果这里不做修改,那么就需要在测试类目录下面配置一个类名-perties的配置文件来制定root.dir的值,作为输出folder13.对工程加入perties配置文件log4j.rootCategory=warn,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout.ConversionPattern=%p%c-%m%nlog4j.appender.stdout.layout=org.apache.log4j.PatternL.springframework.osgi=warn14.在test目录下创建测试类,就是spring-dm-reference文档中的simple test例子packageorg.spring;importorg.osgi.framework.Constants;importorg.springframework.osgi.test.AbstractConfigurableBundleCreatorTests;publicclassSimpleOsgiTestextendsAbstractConfigurableBundleCreatorTests.publicvoidtestOs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 20097-2025防护服装通用技术规范
- GB/T 46070-2025移动智能终端信息无障碍通用规范
- GB/T 46134-2025天然酯在电气设备中的维护和使用导则
- 化工企业职业安全培训课件
- 农业安全教育培训课件
- 内镜下息肉切除培训课件
- 上海迪士尼景区营销方案(3篇)
- 兴化交通安全法规培训课件
- 连锁店营销方案(3篇)
- 内部关系安全课件
- Win10系统安全配置
- 2025年研发人员保密协议书
- 物流园区规章制度模版(2篇)
- 《多能源耦合供热系统》
- 《搞定:无压工作的艺术》完整课件
- 京东方岗位胜任力测评题库
- 印刷包装公司安全生产管理方案
- 高中数学64数列求和省公开课获奖课件市赛课比赛一等奖课件
- 二手车国庆节活动方案
- 人教版八年级上册地理教学计划及进度表
- 2025高考物理步步高同步练习必修3练透答案
评论
0/150
提交评论