获取Junit的执行结果
作者:
J_Rabbit 发布时间:
[ 2017/4/19 15:12:52 ] 推荐标签:
单元测试 Junit
然后,需要写一个监听器ExecutionListener,继承junit的RunListener,并在监听时给对象赋值
package test;
import java.util.ArrayList;
import java.util.List;
import org.junit.runner.Description;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
public class ExecutionListener extends RunListener {
MyResultRecorder recorder;
MethodInfo methodInfo;
List<MethodInfo> list;
public ExecutionListener() {
this.list = new ArrayList<>();
}
public void testRunStarted(Description description) throws Exception {
System.out.println("--------- START ----------");
recorder = new MyResultRecorder();
}
public void testRunFinished(Result result) throws Exception {
recorder.setResult(result.wasSuccessful());
recorder.setList(list);
System.out.println("--------- END ----------");
System.out.println("执行结果 : " + result.wasSuccessful());
System.out.println("执行时间 : " + result.getRunTime());
System.out.println("执行数量 : " + result.getRunCount());
System.out.println("失败数量 : " + result.getFailureCount());
System.out.println("忽略数量 : " + result.getIgnoreCount());
}
public void testStarted(Description description) throws Exception {
recorder.setScript_name(description.getClassName());
System.out.println(description.getMethodName() + " begin");
methodInfo = new MethodInfo();
methodInfo.setMethod_name(description.getMethodName());
}
public void testFinished(Description description) throws Exception {
System.out.println(description.getMethodName() + " end");
if (methodInfo.getError_msg() == null)
methodInfo.setResult(true);
list.add(methodInfo);
}
public void testFailure(Failure failure) throws Exception {
System.out.println("Execution of test case failed : " + failure.getMessage());
methodInfo.setResult(false);
methodInfo.setError_msg(failure.getMessage());
}
public void testIgnored(Description description) throws Exception {
}
}
写一个junit的类,做多个执行的处理
package test;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class JunitDemo2 {
@Before
public void bofore() {
System.out.println("bofore");
}
@After
public void after() {
System.out.println("after");
}
@Test
public void test2() {
System.out.println("test2");
Assert.assertEquals(1, 1);
}
}
后,写一个执行类,看一下执行的效果
package test;
import org.junit.runner.JUnitCore;
public class Execute {
public static void main(String[] args) {
run(JunitDemo.class, JunitDemo2.class);
}
private static void run(Class<?>... classes) {
for (Class<?> clazz : classes) {
JUnitCore runner = new JUnitCore();
ExecutionListener listener = new ExecutionListener();
runner.addListener(listener);
runner.run(clazz);
MyResultRecorder recorder = listener.recorder;
System.out.println(recorder);
}
}
}
执行的结果如下:
--------- START ----------
test1 begin
bofore
test1
after
Execution of test case failed : expected:<1> but was:<2>
test1 end
test2 begin
bofore
test2
after
test2 end
test3 begin
bofore
test3
after
Execution of test case failed : For input string: "aede21"
test3 end
--------- END ----------
执行结果 : false
执行时间 : 11
执行数量 : 3
失败数量 : 2
忽略数量 : 0
MyResultRecorder [script_name=test.JunitDemo, list=[MethodInfo [method_name=test1, result=false, error_msg=expected:<1> but was:<2>], MethodInfo [method_name=test2, result=true, error_msg=null], MethodInfo [method_name=test3, result=false, error_msg=For input string: "aede21"]], result=false]
--------- START ----------
test2 begin
bofore
test2
after
test2 end
--------- END ----------
执行结果 : true
执行时间 : 1
执行数量 : 1
失败数量 : 0
忽略数量 : 0
MyResultRecorder [script_name=test.JunitDemo2, list=[MethodInfo [method_name=test2, result=true, error_msg=null]], result=true]
这样通过重写junit的监听,将junit的执行结果,存储到一个对象当中