是指对软件中的最小可测试单元进行检查和验证。 对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类.
public class Divide {
public static int divide(int a, int b) {
if (b == 0) {
return 0;
} else {
return a / b;
}
}
}
import junit.framework.TestCase;
public class DivideTest3 extends TestCase {
public void setUp() throws Exception {
super.setUp();
}
public void tearDown() throws Exception {
}
public void testDivide() throws Exception {
int a[] = {1, 2147483647, 1};
int b[] = {1, 1, 0};
for (int i = 0; i < a.length; i++) {
int z = Divide.divide(a[i], b[i]);
System.out.println(z);
}
}
}
注解 | 行为 |
---|---|
@BeforeClass | 全局只会执行一次,而且是第一个运行 |
@Before | 在测试方法运行之前运行 |
@Test | 测试方法 |
@After | 在测试方法运行之后运行 |
@AfterClass | 全局只会执行一次,而且是最后一个运行 |
@Test(excepted=XX.class) | 在运行时忽略某个异常 |
@Test(timeout=毫秒) | 允许程序运行的时间 |
@Ignore | 所修饰的方法被测试器忽略。 |
@RunWith | 可以修改测试运行器 org.junit.runner.Runner |
import org.junit.*;
import static org.junit.Assert.*;
public class DivideTest4 {
@Before
public void setUp() throws Exception {
System.out.println("divide开始");
}
@After
public void tearDown() throws Exception {
System.out.println("divide结束");
}
@BeforeClass
public static void beforeClass() {
System.out.println("测试Divide开始");
}
@AfterClass
public static void afterClass() {
System.out.println("测试Divide结束");
}
@Test
public void divide() throws Exception {
int a[] = {1, 2147483647, 1};
int b[] = {1, 1, 0};
for (int i = 0; i < a.length; i++) {
int z = Divide.divide(a[i], b[i]);
System.out.println(z);
}
}
@Test
public void divide1() throws Exception {
int a[] = {1, 2147483647, 1};
int b[] = {1, 1, 2};
int x[] = {1, 2147483647, 1};
for (int i = 0; i < a.length; i++) {
int z = Divide.divide(a[i], b[i]);
System.out.println(z);
assertEquals(x[i], z);//断言
}
}
}
组织测试类一起运行的测试类。
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({AddTest.class,DivideTest4.class})
public class SuiteTest {
/*
* 1.测试套件就是组织测试类一起运行的
*
* 写一个作为测试套件的入口类,这个类里不包含其他的方法
* 更改测试运行器Suite.class
* 将要测试的类作为数组传入到Suite.SuiteClasses({})
*/
}
有时候我们只想只测试数据,不测试方法。
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import static org.junit.Assert.assertEquals;
@RunWith(Parameterized.class)//1.更改默认的测试运行器为RunWith(Parameterized.class)
public class ParameterTest {
//2.声明变量存放预期值和测试数据
int expected = 0;
int input1 = 0;
int input2 = 0;
//3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰
@Parameters
public static Collection
支持JUnit构造器(Generate)直接构造的。
也支持直接构造,具体可参照百度。
http://download.csdn.net/detail/demonliuhui/9828939