一、简介
Junit 4是Junit框架有史以来的最大改进,其主要目标便是利用Java 5的Annotation特性简化测试用例的编写。
在Eclipse 3.2中已经自带了Junit 4.1(我使用的开发环境是Eclipse 3.3+Myeclipse 6.0),我们可以将Junit 4 Library添加到项目用到的Library中。也可以到Junit.org去下载Junit 4 Librar。要求:JDK 5.0或以上版本。
二、使用
1、Junit 3中,Junit依赖反射来执行每个以test开头的方法,但是Junit 4中,有了Annotation的,我们的测试方法就不需要再以testXXX来标识了,而是写上一个@Test标注即可。如:
@Test public static void m1() {}
2、测试类也不必继承自TestCase了。我们可能会想到,不继承TestCase,我们就无法使用断言,即无法调用assertXxx()方法了。所以,在Junit 4中,所有的断言的方法全部都以静态方法的形式放入到了Assert类中,使用Assert.assertXxx()来调用,如果使用import static静态导入Assert,那么与Junit 3中使用断言是一样的。
3、Junit 3中,setUp()和tearDown()方法分别是准备测试环境和释放资源,在Junit 4中,这二个方法依赖于@Before和@After标记,好处是如果我们忘记了在这二个方法中调用父类的同名方法,Junit框架会自动处理使用@Before和@After标记的方法。
4、不再强迫必须使用setUp()和tearDown()作为方法名,可以使用更有意义的方法名。如:init()和close(),前提是它们被标注了@Before和@After标记
三、实例开发
我们还使用讲解Junit 3时使用的Calculate类
package junit;
public class Calculate {
public int add(int a, int b) {
return a + b;
}
public int minus(int a,int b)
{
return a - b;
}
}
Junit 4测试类
public class CalculateTest {
private Calculate cal ;
public CalculateTest()
{
System.out.println("创建了CalculateTest类的实例");
}
@Before
public void init() throws Exception {
cal = new Calculate();
System.out.println("测试方法前调用@Befored");
}
@After
public void close() throws Exception {
System.out.println("测试方法后调用@After");
}
@Test
public void doAdd() {
assertEquals(cal.add(1, 2), 3);
}
@Test
public void testMinus() {
assertEquals(cal.minus(2, 1), 1);
}
}
四、测试异常:
对测试异常,JUnit 4可以用expected=Exception.class来期待一个预期的异常,而不必手动编写。如:测试以下方法,
public int div(int a,int b)
{
return a / b;
}
可能会抛出除数为0的异常,我们可以这样来编写:
@Test(expected=ArithmeticException.class)
public void testDiv() {
cal.div(5, 0);
}
五、设置最长执行时间
对于非常耗时的测试,@Test还有一个timeout来标识该方法最长执行时间,超过此时间即表示该方法测试失败:1为毫秒数
@Test(timeout=1)
public void testMinus() {
assertEquals(cal.minus(2, 1), 1);
}
六、@BeforeClass和@AfterClass
这是Junit 4与Junit 3相比较另一个较大的区别。它们在一个Test类的所有测试方法执行前后各执行一次。这是为了初始化一些重要的资源,比如数据库连接,会在@BeforeClass中来执行初始化,然后再执行测试方法,最后在@AfterClass中释放资源。
由于这二个方法在运行其间仅执行一次,因此它们只能标记为静态方法,其实在所有的测试方法中共享的资源也必须是静态引用。如:
@BeforeClass
public static void setUpBeforeClass() throws Exception {
System.out.println("call @BeforeClass and init database connection");
dbConnection = new Object();
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
System.out.println("call @AfterClass to release database connection");
dbConnection = null;
}
注意:
Java 5.0中的自动Box/UnBox特性,在调用assertEquals()时要注意:如果我们这样写:
assertEquals(100f,100);
按照自动装箱会变成:
assertEquals(new Float(100f),new Integer(100));
这样会引起测试失败,因为它们类型不一样。
因此我们对float和double的测试,应试使用:
assertEquals(float, float, float delta);
assertEquals(double, double, double delta);
还有一点,Junit 4不能与以前的版本兼容。
相关推荐
这是本人在公司培训时做的一个PPT文档,介绍了junit3以及junit4,还有他们的区别使用
junit JAR包文件, 直接导入到项目中可以兼容使用,亲测过
Selenium Simplified 全本 350页 pdf 非扫描版 详细介绍 Selenium IDE Java JUnit 更多使用。 自动化软件测试 工具 Selenium 的 顶级教科书。
JUnit是一个Java语言的单元测试框架。JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。 1、用于测试期望结果的断言(Assertion) 2、...
Junit java单元测试内部机制解析
在本篇文章里小编给大家分享的是关于Java Junit单元测试的相关知识点内容,有兴趣的朋友们学习下。
junit4 jar包 Java单元测试框架绿色免费版.zip
这是一个junit4测试的jar包,copy进去就可用
本代码属于Java练习基本篇,主要写了关于Java单元格测试的一些相关内容,仅供初学者参考借鉴,因为写的时间久了,忘了当时的思路,有需要的同学请耐下心来仔细翻阅,不足之处请海涵
spring框架单元测试包。一般程序员在导入测试jia包时需要下载导入jar包,java测试包junit-4.9的jar包已压缩好。
资源对应https://onefire.blog.csdn.net/article/details/120736588博客,这个是一个完整的基于SpringBoot架构的Java项目,使用idea或者eclipse打开就可以使用。对零基础或小白,以及测试工程师,有很大的参考价值。
Java单元测试之JUnit篇
junit->java开发->jar包
JUnit是一个开放源代码的Java测试框架
用于java单元测试的资源包 junit-4.11.jar hamcrest-core-1.3.jar
标签:junit、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
java junit源码将JUnit3代码转换为JUnit4 脚本不是完美的,但是在处理最常见的问题上还有很长的路要走。 不处理呼叫 junit.framework.TestSuite.addTestSuite(clazz); 对于这些,您需要使用@RunWith(Suite.class) 。
java junit源码
JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。
刚发布的最新版 Junit 4.0