最近在做一个自动化批量测试的插件,是基于JUnit的。插件依赖于JDT的JUint插件,会自动启动JUint测试,并且收集测试结果。
本文重点讨论如何监听并收集JUnit的测试结果。
方法一:实现JDT插件提供的org.eclipse.jdt.junit.testRunListeners扩展点。
这个扩展点需要指定一个listener类,实现ITestRunListener接口。
方法二:方法一种扩展点和接口在eclipse3.3版本以后就被标注为@deprecated了,java的东东过时还真是快,为了跟上时代的步伐,我们还是看看现在流行的方法吧。
这次我们实现的是一个抽象类TestRunListener,比方法一中的接口简单很多,只有四个方法定义,如下
public abstract class TestRunListener {
public void sessionStarted(ITestRunSession session) {
}
public void sessionFinished(ITestRunSession session) {
//在ITestRunSession中可以获取所有的测试结果
}
public void testCaseStarted(ITestCaseElement testCaseElement) {
}
public void testCaseFinished(ITestCaseElement testCaseElement) {
}
}
采用这种方 法需要首先理解JUnit的一些基本概念。
testCase是指一个测试用例,对应一个测试方法;
testSuite对用JUnit中一个测试类,所以一个testSuite中可以包含多个testCase;
testRun是指JUnit的一次运行,testRun里可以装在多个testSuite;
testRunSession是说JUnit的一次运行是一个周期,每个周期只运行一个testRun。
知道了这些基本概念,那么就对TestRunListener的四个方法作用一目了然了。
最后,就是注册这个listener,方法一是采用扩展点去注册的,方法二需要在启动JUnit前执行以下代码:
JUnitCore.addTestRunListener(yourTestRunListener);