您的位置:首页 > 其它

命令行模式下junit4.3测试粒度细化到测试方法

2009-05-21 22:01 375 查看
命令如下:
java -cp D:\AutoRun\lib\coretestlib\common\junit-4.3.jar;. org.junit.runner.AliJUnitCore com.TestAA(测试Class名) TestCase1(测试方法名)

攻略如下
由于事先junit 支持 测试粒度到测试类级别,命令如下
java -cp D:\AutoRun\lib\coretestlib\common\junit-4.3.jar;. org.junit.runner.JUnitCore com.TestAA

但是它支持界面模式下的单方法执行,那么肯定有相应的测试类支持,为此找到了TestMethodRunner的类,同时想到改造org.junit.runner.JUnitCore的main的方法,让它去调用TestMethodRuner改造的方法代码分别如下
public Result runMain(String... args) {
System.out.println("JUnit version " + Version.id());
Class<?> cls = null ;
Method mes = null;
List<Failure> missingClasses= new ArrayList<Failure>();
try {
cls = Class.forName(args[0]);
for(int j=0; j< cls.getMethods().length; j++)
{
if(cls.getMethods()[j].getName().endsWith(args[1]))
mes = cls.getMethods()[j];
}
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
System.out.println("Could not find class: " + args[0]);
Description description= Description.createSuiteDescription(args[0]);
Failure failure= new Failure(description, e1);
missingClasses.add(failure);
}
RunListener listener= new TextListener();
addListener(listener);
Result result= run(cls,mes);
for (Failure each : missingClasses)
result.getFailures().add(each);
return result;

}

public Result run(Class<?> cls, Method mes ) {
Description description;
description = new Description("开始");
TestMethodRunner tmr = null;
try
{
tmr = new TestMethodRunner(cls.newInstance(),
mes, fNotifier, description);
}
catch (Exception e1) {
System.out.println(e1.getMessage());
}
return run(tmr,description);

}
/**
*基本保持原来的函数不变,只是把Runner改成TestMethodRunner
*/
public Result run(TestMethodRunner runner,Description description) {
Result result= new Result();
RunListener listener= result.createListener();
addFirstListener(listener);
try {

fNotifier.fireTestRunStarted(description);
runner.run();
fNotifier.fireTestRunFinished(result);
} finally {
removeListener(listener);
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息