内容简介:写单元测试用例,是程序员的好习惯,写java程序,一般使用Junit写单元测试。我在写单元测试用例到时候,遇到一个问题:Junit在整个project中是一个java进程,如果你的程序里涉及静态变量,就会导致两个单元测试类之间相互影响。你可以每次beforeClass初始化静态变量,但是有时候依赖了很多开源软件,你都不知道究竟一个测试流程里用到了哪些静态变量,甚至不知道如何还原它们。
写单元测试用例,是 程序员 的好习惯,写 java 程序,一般使用Junit写单元测试。
我在写单元测试用例到时候,遇到一个问题:Junit在整个project中是一个java进程,如果你的程序里涉及静态变量,就会导致两个单元测试类之间相互影响。
你可以每次beforeClass初始化静态变量,但是有时候依赖了很多开源软件,你都不知道究竟一个测试流程里用到了哪些静态变量,甚至不知道如何还原它们。
最有效直接的办法就是每个测试用例都使用一个独立的classloader,也就是说每个test case都是类隔离的。
参考 https://stackoverflow.com/questions/42102/using-different-classloaders-for-different-junit-tests 这篇帖子里的回复。实现了这个功能。
具体源码:
https://github.com/johnyannj/junit-alone
用法如下:
maven引入依赖
<dependency> <groupId>com.zhaoyanblog</groupId> <artifactId>junit-alone</artifactId> <version>1.0.1-SNAPSHOT</version> </dependency>
在你的测试用例中,用AloneRunner代替你原来真实的Runner,并把你真实的Runner,设置给@AloneWith
@RunWith(AloneRunner.class) @AloneWith(JUnit4.class) public class JunitAloneTest { @Test public void test() { StaticClass.staticNum++; Assert.assertEquals(1, StaticClass.staticNum); } }
这样你的测试用例就会使用一个独立的classloader来执行了, 试试看吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web之困:现代Web应用安全指南
(美)Michal Zalewski / 朱筱丹 / 机械工业出版社 / 2013-10 / 69
《web之困:现代web应用安全指南》在web安全领域有“圣经”的美誉,在世界范围内被安全工作者和web从业人员广为称道,由来自google chrome浏览器团队的世界顶级黑客、国际一流安全专家撰写,是目前唯一深度探索现代web浏览器安全技术的专著。本书从浏览器设计的角度切入,以探讨浏览器的各主要特性和由此衍生出来的各种安全相关问题为主线,深入剖析了现代web浏览器的技术原理、安全机制和设计上的......一起来看看 《Web之困:现代Web应用安全指南》 这本书的介绍吧!