来源:慕课网 JUnit 的笔记
1、JUnit是XUnit的一部分:
2、通常它们的目录,和文件名的关系设置如下图,在src下建立名为“test”的source folder,包名与源码中的一样,类名在后加“Test”,测试方法名在被测试方法名前加“test”:
3、测试实例1:
4、测试实例2:
public class JunitProcessTest {
/**
* 1.@BeforeCLass修饰的方法为静态的,会在所有方法调用前执行
* 在内存中值又一份实例,适合加载配置文件
* 2、@AfterClass修饰的方法通常用来做清理工作
* 3、@Before和@After会在每个测试方法前后执行
*/
static int i=0;
@BeforeClass
public static void setUpBeforeClass(){
System.out.println("before class..."+(i++));
}
@AfterClass
public static void tearDownAfterClass(){
System.out.println("after class..."+" "+(i++));
}
@Before
public void setUp(){
System.out.println("before..."+" "+(i++));
}
@After
public void tearDown(){
System.out.println("after..."+" "+(i++));
}
@Test
public void test1() {
System.out.println("test1"+" "+(i++));
}
@Test
public void test2() {
System.out.println("test2"+" "+(i++));
}
}
测试结果:
4、测试3:
public class AnotationTest {
/**
* @Test 把一个普通方法修饰为测试方法
* @Test(expected=XX.class)处理异常
* @Test(timeout=x毫秒)
* @Ignore使某个测试方法被忽略
* assertEquals为静态方法,有多个重载方法
*/
@Test(expected=ArithmeticException.class)
public void testDivision(){
assertEquals(3,new Calculate().division(6, 0));
}
@Ignore("test")
@Test(timeout=2000)
public void testWhile(){
int i=0;
while(true){
System.out.println(i++);
}
}
}
5、测试4:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
/**
* @RunWith(Suite.class)不使用默认的运行器,使用org.junit.runners运行器
* 这样SuiteTest就变成了测试套件的入口类
*/
@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class})
public class SuiteTest {//需保证为空类,且public
}
测试结果:
6、测试5:
import static org.junit.Assert.assertEquals;
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;
@RunWith(Parameterized.class)//更改运行器
public class ParameterTest {
int expected=0;
int input1=0;
int input2=0;
@Parameters
public static Collection<Object[]> t(){
return Arrays.asList(new Object[][]{
{4,2,2},
{6,1,5},
{6,1,2}
});
}
public ParameterTest(int expected,int input1,int input2) {
this.expected=expected;
this.input1=input1;
this.input2=input2;
}
@Test
public void testAdd(){
assertEquals(expected,new Calculate().add(input1, input2));
}
}
结果: