您的位置:首页 > 其它

JUnit4入门学习笔记

2013-07-22 12:11 253 查看
JUnit4 单元测试(对java文件中的方法进行测试)
JUnit常用的两个单词解释:
Failures:测试失败;
Errors:程序本身出错;
当JUnit出现errors,则不会考虑failures的情况,因此需要先将error排除,才能进行测试。
 
JUnit4推荐放弃旧的断言,改用新的断言:hamcrest 断言:
Keeps the bar green to keep the code clean.
Hamcrest jar包下载地址:http://code.google.com/p/hamcrest/downloads/list
使用Hamcrest,需要用到两个包 hamcrest-core.jar 和 hamcrest-library.jar, 对应的Maven Dependency为:
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
</dependency>
 
Hamcrest断言使用方法 assertThat,(查看API文档);
assertThat()方法给出的提示信息格式如下:



 
 
JUnit4 Annotation
JUnit4使用注解来表示单元测试,常用注解如下:
@Test  //测试方法(执行JUnit测试时执行的方法)
Test注解有两个参数:
expected,期望抛出某种异常,用来测试异常情况;
timeout,期望方法在多少个毫秒之内完成,用来测试方法执行效率;
@Ignore  //忽略方法(执行JUnit测试的时候忽略掉,不执行该方法);
@Before  // 执行每一个测试方法之前都会执行;
@After  // 执行每一个测试方法之后都会执行;
@BeforeClass  //在所有测试方法执行之前执行,仅执行一次(此方法修饰符必须static);
@AfterClass  //在所有测试方法全部执行完成之后执行,仅执行一次(此方法修饰符必须static);
 
BeforeClass 一般用在初始化系统资源,比较耗时的资源,或者搭载一些比较复杂环境;
AfterClass 一般用在测试方法结束之后,释放掉一些资源,清理测试环境,关闭数据库资源等;
 
Demo代码如下:
package com.main;
 
public class JUnitDemo {
public int add(int a, int b) {
return a+b;
}
public int minus(int a, int b) {
return a+b;
}
public void expectException() {
System.out.println(1/0);
}
public void inTime() {
for (int i=0;i<10000;i++) {
System.out.print(i+";");
}
}
}
//-------------------------
package com.test;
 
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test;
import com.main.JUnitDemo;
 
public class JUnitDemoTest {
 
@Test
public void testAdd() {
int z = new JUnitDemo().add(1, 2);
Assert.assertEquals(3, z);
Assert.assertEquals("加法出错",3, z);
Assert.assertThat(z, Matchers.is(8)); //此语法基于Hamcrest包
Assert.assertThat("加法出错",z, Matchers.is(8)); //此语法基于Hamcrest包
}
 
@Test
public void testMinus() {
int z = new JUnitDemo().minus(3, 2);
Assert.assertEquals("减法出错",1, z); //重载方法,用于提示信息
}
 
//测试异常,如果抛出 java.lang.ArithmeticException,则测试通过
@Test(expected=java.lang.ArithmeticException.class)
public void testExpectException() {
new JUnitDemo().expectException();
}
 
//测试时间,如果在100个毫秒内完成,则测试通过;用于测试方法的执行效率
@Test(timeout=100)
public void testInTime() {
new JUnitDemo().inTime();
}
}
 
PS:
其他常用的单元测试框架 TestNG ,下一代单元测试框架,能够控制到方法级别,功能比JUnit要强大。具体参见相关资料。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息