通过前面的4篇,我相信你已经成功的用Tycho build出你的第一个RCP可执行程序了。这一篇我们来介绍一下Tycho对Junt的集成。
废话不多说,在Tyhco中对Junit的集成是通过tycho-surefire-plugin插件来实现的。从插件的名字上来看很像Maven里的surefire插件。但其实Tycho的surefire和Maven的surefire还是有一些差别的,这里的差别主要体现在生命周期上。tycho-surefire-plugin插件是在integration-test phase执行的,而maven-surefire-plugin插件是在test phase执行的。也许你对integration-test这个phase不太了解,其实这个pahse是位于我们经常做的package和install之间的。
对tycho-surefire-plugin插件有了一定的了解之后,我们就可以开始创建我们的Junit测试项目了。我们应当创建什么样的项目用来RCP的测试呢?针对于plugin项目的测试,在这里推荐的是Fragment Project。你也许会好奇为什么选择Fragment项目?原因有两点:
1. Fragment可以访问他的主plugin中的代码而不必去导出他们,因为他们本身就处在一个plugin当中,而且Fragment中的代码其实是是用主plugin的classloader来加载的。
2. 因为从外部来看Fragment和和主plugin项目其实是一个plugin,他们用的是一套的classloader,所以假如你的测试class和你主class是在一个包内,在我们的测试class当中甚至可以直接访问主class的私有方法。
我们通过eclipse的项目创建向导创建一个Fragment项目。因为我们测试的plugin是我们之前创建的com.chnic.tycho.mail.plugin,因此在这里我们的fragment的项目名取名为com.chnic.tycho.mail.plugin.test。在接下来的host plugin指定的对话框中我们指定com.chnic.tycho.mail.plugin作为host plugin
项目创建完成之后我们还是convert to Maven project。因为这是一个Junit测试项目,因此在这里我们的packaging设置成为eclipse-test-plugin
很显然,生成的pom文件会有错误,因为他识别不出来eclipse-test-plugin这种packaging方式。我们依然需要让他继承我们的parent项目的pom。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.chnic.tycho.mail</groupId> <artifactId>com.chnic.tycho.mail.parent</artifactId> <version>1.0.0-SNAPSHOT</version> <relativePath>../com.chnic.tycho.mail.parent/pom.xml</relativePath> </parent> <artifactId>com.chnic.tycho.mail.plugin.test</artifactId> <packaging>eclipse-test-plugin</packaging> </project>
转化成Maven项目之后,我们来添加一个junit test case。我们创建一个和host plugin一模一样的包名,然后在其之内创建一个PerspectiveTest测试类
package com.chnic.tycho.mail.plugin; import static org.junit.Assert.*; import org.junit.Test; public class PerspectiveTest { @Test public void testID() { assertEquals("com.chnic.tycho.mail.plugin.perspective", Perspective.ID); } }
创建完成之后我们会发现测试类报错了,那是因为我们没有把junit加到fragment项目的Require-Bundle里。ctrl+1修复编译错误。
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Test Bundle-SymbolicName: com.chnic.tycho.mail.plugin.test Bundle-Version: 1.0.0.qualifier Bundle-Vendor: Nick Fragment-Host: com.chnic.tycho.mail.plugin;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: org.junit
所有的工作完成之后,我们要做的就是吧我们的测试项目添加到我们的聚合项目com.chnic.tycho.mail.build中去。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.chnic.tycho.mail</groupId> <artifactId>com.chnic.tycho.mail.parent</artifactId> <version>1.0.0-SNAPSHOT</version> <relativePath>../com.chnic.tycho.mail.parent/pom.xml</relativePath> </parent> <artifactId>com.chnic.tycho.mail.build</artifactId> <packaging>pom</packaging> <modules> <module>../com.chnic.tycho.mail.feature</module> <module>../com.chnic.tycho.mail.plugin</module> <module>../com.chnic.tycho.mail.product</module> <module>../com.chnic.tycho.mail.updatesite</module> <module>../com.chnic.tycho.mail.plugin.test</module> </modules> </project>
Build我们的com.chnic.tycho.mail.build项目,我们会发现Maven在build的时候控制台上多出了如下的信息
T E S T S
-------------------------------------------------------
Running com.chnic.tycho.mail.plugin.PerspectiveTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec - in com.chnic.tycho.mail.plugin.PerspectiveTest
testID(com.chnic.tycho.mail.plugin.PerspectiveTest) Time elapsed: 0 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] All tests passed!
控制的信息告诉我们,test case已经被执行,并且case是测试通过的。由于我们的测试fragment项目只会在integration-test phase被执行,并不会被打包到最终的product中,你在product的plugins的文件夹中也找不到相关的jar文件。
在这里还要额外的说一句,由于Tycho的surefire plugin是支持基于UI和不基于UI的测试的,如果你的test case是一个基于UI的test case,那么你需要在POM文件中,显示的指定useUIHarness为true。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.chnic.tycho.mail</groupId> <artifactId>com.chnic.tycho.mail.parent</artifactId> <version>1.0.0-SNAPSHOT</version> <relativePath>../com.chnic.tycho.mail.parent/pom.xml</relativePath> </parent> <artifactId>com.chnic.tycho.mail.plugin.test</artifactId> <packaging>eclipse-test-plugin</packaging> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-surefire-plugin</artifactId> <version>${tycho.version}</version> <configuration> <useUIHarness>true</useUIHarness> </configuration> </plugin> </plugins> </build> </project>
至此,我们也完成了Tycho对Junit的集成。com.chnic.tycho.mail.plugin.test项目代码,可以在附件中找到。在下一篇中会介绍Tycho的一些其他的有用的配置。
相关推荐
maxwell simplorer simulink 永磁同步电机矢量控制联合仿真,电机为分数槽绕组,使用pi控制SVPWM调制,修改文件路径后可使用,软件版本matlab 2017b, Maxwell electronics 2021b 共包含两个文件, Maxwell和Simplorer联合仿真文件,以及Maxwell Simplorer simulink 三者联合仿真文件。
基于springboot的网上图书商城--论文.zip
门板边挡板分离喂料机sw19全套技术资料100%好用.zip
信号与系统matlab仿真实验报告2024(学生提交).docx
洗砂机stp全套技术资料100%好用.zip
用句子记忆单词带背版本,适合时间比较充足想打好基础的同学
电子PCB板龙门铣自动化生产线sw17可编辑全套技术资料100%好用.zip
最新紧固件标准型号对照表.docx
【创新无忧】基于matlab遗传算法GA优化极限学习机KELM故障诊断【含Matlab源码 10735期】.zip
【创新无忧】基于matlab极光算法PLO优化极限学习机KELM故障诊断【含Matlab源码 10707期】.zip
java面向对象程序设计实验报告
展示PRD文档的关键要素编写具体示例。同时提供了一份模板,方便撰写PRD文档。
内容概要:本文详细介绍了一个基于广义变分同步优化(GVSAO)的时间序列预测模型项目。该项目涵盖了从项目背景到最终部署的整个流程,包括数据预处理、模型构建、训练、优化、GUI界面设计、实时预测及系统部署等方面。GVSAO作为一种新型优化方法,能更好地处理非线性关系和高维数据的特点,在预测股票价格、电力负荷、天气变化等方面显示出优越性能。文中提供的MATLAB代码和可视化工具使模型实现和评估更为便捷。 适合人群:对时间序列预测感兴趣的科研工作者、学生和工程师,特别是那些想要深入了解同步优化技术及其应用场景的人。 使用场景及目标:①适用于金融、能源、气象和制造业等多个领域的时间序列预测;②提升模型预测精度;③提供一个完整的项目实施模板供学习模仿。使用该模型可以更有效地挖掘时间序列数据背后隐含的趋势和规律,辅助商业决策和社会管理。 其他说明:本文档不仅包含理论概念和技术细节,还有丰富的实例演示,可以帮助读者全面掌握基于GVSAO的时间序列预测技巧。同时,附带完整的程序代码使得研究成果可以直接应用于实际工作中。
DSP芯片程序读取 DSP28德州仪器28系列DSP反汇编,定点器件和浮点器件均支持,能够根据out、hex或bin文件建立可以编译的CCS汇编语言工程,并且编译后可生成二进制完全相同的bin文件,方便进行研究软件设计思路,二次开发,器件迁移,混淆再链接,研究通信协议,解除ID限制,提取算法等,小批量的代码转C。
内容概要:本文介绍了一种基于对比学习的图异常检测算法,涵盖数据预处理、对比样本构建、模型设计(含选择适当的GNN架构及设计对比学习模块)、异常检测流程、结果评估方法和代码实例六个主要环节。文章特别强调在常规数据集(如Cora、PubMed)的应用上力求获得较高的AUC分数,超过80%,并且提供了详细的操作指导和Python源代码示例供开发者学习。 适用人群:主要面向有一定机器学习、深度学习理论基础,尤其关注图结构数据处理的研究人员、数据科学家和技术专家。对于有志于从事网络安全监控、金融风控等领域工作的专业人士尤为有用。 使用场景及目标:①针对具有大量节点关系的数据结构进行高效的异常识别;②利用先进的AI技术和工具箱快速搭建并迭代优化系统性能,达成高效准确的预测;③为后续研究提供参考和启示。 其他说明:文中不仅深入解析了每一阶段的技术细节,而且通过具体的Python实现片段帮助读者更好地理解和实践这一复杂的过程。对于期望深入挖掘对比学习在非传统数据格式下应用可能性的人而言是个宝贵的参考资料。
MIPI-DPU platform TCL
【JavaScrip】一个傻妞机器人插件库_pgj
comsol锂离子电池组充放电循环强制液冷散热仿真。 模型为SolidWorks导入,可以提供原模型。 电池模型:一维电化学(p2d)模型耦合三维热模型
饼干分包sw20可编辑全套技术资料100%好用.zip
自适应大领域搜索算法(ALNS)matlab解决tsp问题,与传统大规模领域搜索算法(LNS)相比收敛性强,运行时间短,很好的学习资料