本文主要是介绍JUnit4入门学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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要强大。具体参见相关资料。
这篇关于JUnit4入门学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!