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代码如下:
PS:
其他常用的单元测试框架 TestNG ,下一代单元测试框架,能够控制到方法级别,功能比JUnit要强大。具体参见相关资料。
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要强大。具体参见相关资料。
相关文章推荐
- 持续集成学习笔记-入门篇(5)持续集成自动化(二):具体实现方式一
- Oracle RAC学习笔记:基本概念及入门 01
- springmvc学习笔记(5)-入门程序小结
- Struts2入门-第一天学习笔记
- Python爬虫(入门+进阶)学习笔记 1-1 什么是爬虫?
- C# 2010 从入门到精通 学习笔记4 第5章 使用复合赋值和循环语句
- C# 2010 从入门到精通 学习笔记5 第6章 管理错误和异常
- Lua 学习笔记(一) ——入门
- C#入门到精通学习笔记01
- 10、ExtJS入门教程【学习笔记】
- Hadoop学习笔记--入门
- 零基础入门-javaScript学习笔记之从基本数据类型学起
- Netty5入门学习笔记004-使用Netty传输POJO对象(上)
- Log4j 学习笔记(二)Log4j快速入门配置文件log4j.properties
- Lua入门学习笔记
- [机器学习入门] 李宏毅机器学习笔记-24(introduction of Structured Learning;结构化学习介绍)
- SPSS(|PASW)18 学习笔记(1):入门示例-克山病例
- Java Reflection(反射) 入门学习笔记 之三 (Array)
- Django入门学习笔记(一) 单个model的保存
- Java入门基础_学习笔记[5]_接口与内部类