使用Tycho来构建你的RCP程序(五) —— Plugin Unit Test

阅读更多

通过前面的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之间的。

写道
Package -> pre-integration-test -> integration-test -> post-integration-test -> verify -> install -> deploy

 

对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


使用Tycho来构建你的RCP程序(五) —— Plugin Unit Test_第1张图片
 

项目创建完成之后我们还是convert to Maven project。因为这是一个Junit测试项目,因此在这里我们的packaging设置成为eclipse-test-plugin


使用Tycho来构建你的RCP程序(五) —— Plugin Unit Test_第2张图片
 

很显然,生成的pom文件会有错误,因为他识别不出来eclipse-test-plugin这种packaging方式。我们依然需要让他继承我们的parent项目的pom。

 


  4.0.0
  
  
    com.chnic.tycho.mail
    com.chnic.tycho.mail.parent
    1.0.0-SNAPSHOT
    ../com.chnic.tycho.mail.parent/pom.xml
  
  
  com.chnic.tycho.mail.plugin.test
  eclipse-test-plugin

 

转化成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中去。

 


  4.0.0

  
    com.chnic.tycho.mail
    com.chnic.tycho.mail.parent
    1.0.0-SNAPSHOT
    ../com.chnic.tycho.mail.parent/pom.xml
  
  
  com.chnic.tycho.mail.build
  pom
  
  
  	../com.chnic.tycho.mail.feature
  	../com.chnic.tycho.mail.plugin
  	../com.chnic.tycho.mail.product
  	../com.chnic.tycho.mail.updatesite
  	../com.chnic.tycho.mail.plugin.test
  

 

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。


  4.0.0
  
  
    com.chnic.tycho.mail
    com.chnic.tycho.mail.parent
    1.0.0-SNAPSHOT
    ../com.chnic.tycho.mail.parent/pom.xml
  
  
  com.chnic.tycho.mail.plugin.test
  eclipse-test-plugin
  
  
    src
    
      
        org.eclipse.tycho
        tycho-surefire-plugin
        ${tycho.version}
        
          true
        
      
    
  

 

至此,我们也完成了Tycho对Junit的集成。com.chnic.tycho.mail.plugin.test项目代码,可以在附件中找到。在下一篇中会介绍Tycho的一些其他的有用的配置。

  • 使用Tycho来构建你的RCP程序(五) —— Plugin Unit Test_第3张图片
  • 大小: 46.1 KB
  • 使用Tycho来构建你的RCP程序(五) —— Plugin Unit Test_第4张图片
  • 大小: 36.5 KB
  • com.chnic.tycho.mail.plugin.test.zip (5.2 KB)
  • 下载次数: 11
  • 查看图片附件

你可能感兴趣的:(RCP,Build,Maven,Tycho,Junit)