前言
JUnit测试即所谓白盒测试,通俗的讲,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
什么是单元测试
当我们写了个类,要给别人用时,会不会有bug?怎么办?当然先测试一下啦。那怎么测试呢,直接在main方法测试好不好? 答案当然是不好,原因主要有这样两个,一、我们所写的方法不能一起运行。二、大多数情况下需要人为的观察输出确定是否正确。
为什么要进行单元测试
1、增强程序的健壮性,减少后期维护的麻烦。
2、鼓舞我们的士气,明确知道我们的程序是没问题的。
JUnit测试具体方法
一、新建工程,建立类,
建立testcase
注意一下几点:
1 、类放在test包中
2 、 类名用XXXTest结尾
3、方法用testMethod命名
4、最好放弃旧的断言,使用hamcrest断言,此时要引入的jar包有hamcrest-core-版本号.jar和hamcrest-library-版本号.jar。
二、
使用hamcrest的匹配方法
例如使用assertThat方法等。
例如使用assertThat方法等。
三、Failure和Error
1、
Failure是指测试失败
2、
Error是指测试程序本身出错
四、JUnit4 Annotation
1. @Test: 测试方法
a) (expected=XXException.class)
b) (timeout=xxx)
2. @Ignore: 被忽略的测试方法
3. @Before: 每一个测试方法之前运行
4. @After: 每一个测试方法之后运行
5. @BeforeClass: 所有测试开始之前运行
6. @AfterClass: 所有测试结束之后运行
五、其他框架:TestNG
六、具体简单代码:
被测试类T
package com.clint.junit;
public class T {
public int add(int x, int y){
return x + y;
}
public int divide(int x, int y){
return x/y;
}
public static void main(String[] args){
int z = new T().add(3, 5);
System.out.println(z);
}
}
测试类:TTest
package com.clint.junit.test;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import org.junit.Test;
import com.clint.junit.T;
public class TTest {
@Test
public void testAdd() {
int z = new T().add(3,5);
//assertEquals(8,z);
assertThat(z, is(8));
}
// @Ignore
@Test(expected=java.lang.ArithmeticException.class,timeout=200)
public void testDivide() {
int z = new T().divide(6,0);
assertEquals(3,z);
}
}
package com.clint.junit.test;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import org.junit.Test;
import com.clint.junit.T;
public class TTest {
@Test
public void testAdd() {
int z = new T().add(3,5);
//assertEquals(8,z);
assertThat(z, is(8));
}
// @Ignore
@Test(expected=java.lang.ArithmeticException.class,timeout=200)
public void testDivide() {
int z = new T().divide(6,0);
assertEquals(3,z);
}
}
834

被折叠的 条评论
为什么被折叠?



