博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取JUnit的执行结果
阅读量:5326 次
发布时间:2019-06-14

本文共 6264 字,大约阅读时间需要 20 分钟。

junit执行之后会有一个结果展示,下面就来看一下怎么获取这些结果并将其存储为一个对象

junit代码如下:

package test;import org.junit.After;import org.junit.Assert;import org.junit.Before;import org.junit.Test;public class JunitDemo {    @Before    public void bofore() {        System.out.println("bofore");    }    @After    public void after() {        System.out.println("after");    }    @Test    public void test1() {        System.out.println("test1");        Assert.assertEquals(1, 2);    }    @Test    public void test2() {        System.out.println("test2");        Assert.assertEquals(1, 1);    }    @Test    public void test3() {        System.out.println("test3");        Integer.valueOf("aede21");    }}

 

首先先写两个类,分别是结果对象和结果中的方法执行结果对象

结果记录类:

package test;import java.util.List;public class MyResultRecorder {    String script_name;    List
list; Boolean result; public String getScript_name() { return script_name; } public void setScript_name(String script_name) { this.script_name = script_name; } public List
getList() { return list; } public void setList(List
list) { this.list = list; } public Boolean getResult() { return result; } public void setResult(Boolean result) { this.result = result; } @Override public String toString() { return "MyResultRecorder [script_name=" + script_name + ", list=" + list + ", result=" + result + "]"; }}

记录中的方法:

package test;public class MethodInfo {    String method_name;    Boolean result;    String error_msg;    public String getMethod_name() {        return method_name;    }    public void setMethod_name(String method_name) {        this.method_name = method_name;    }    public Boolean getResult() {        return result;    }    public void setResult(Boolean result) {        this.result = result;    }    public String getError_msg() {        return error_msg;    }    public void setError_msg(String error_msg) {        this.error_msg = error_msg;    }    @Override    public String toString() {        return "MethodInfo [method_name=" + method_name + ", result=" + result + ", error_msg=" + error_msg + "]";    }}

然后,需要写一个监听器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
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的执行结果,存储到一个对象当中

转载于:https://www.cnblogs.com/J-Rabbit/p/6398259.html

你可能感兴趣的文章
k8s取节点内docker中的日志
查看>>
turtle库基础练习
查看>>
SVM-笔记(1)
查看>>
android"百码"2——基础小知识积累(逐步完善)2015-06-15
查看>>
如鹏网学习笔记(四).Net常用类库
查看>>
IE浏览器解决margin:0 auto;不居中办法!
查看>>
解决响应式布局下兼容性的问题
查看>>
Jsp页面跳转和js控制页面跳转的几种方法
查看>>
京东静态网页练习记录
查看>>
Filebeat Config 参数详解:
查看>>
CCActionManager(动作管理器)
查看>>
使用DBCP连接池对连接进行管理
查看>>
C# winform 右下角弹出窗口效果
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
(转)大型网站架构演变和知识体系
查看>>
中级web前端面试题1
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>