JUnit
Posted darknessplus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JUnit相关的知识,希望对你有一定的参考价值。
前言
单元测试的规划时间应该在接口设计完成后、编码开始前
注解
以下常用注解修饰的方法被按照顺序执行
@BeforeClass
@Before
@Test
@After
@AfterClass
其中@BeforeClass和@AfterClass只会执行一次,并且必须是static void的;而@Before和@After会在每个@Test前后被执行,且必须是public void的
@Test注解可以指定必须抛出的异常(expected属性)、指定超时时间(timeout属性)
断言assert
assertTrue()
assertFalse()
assertEquals():调用equals方法
assertSame():判断地址是否相同
assertNull
参数化测试
测试类使用@RunWith(Parameterized.class)修饰
生成测试数据的方法使用@Paramters修饰,返回类型为Collection<Object[]>
使用@Parameter修饰需要注入的参数(来源是上述集合),可以指定下标
@RunWith(Parameterized.class)
public class CalculatorTest
@Parameters
public static Collection<Object[]> data()
return Arrays.asList(new Object[][]
1, 2, 3, 4, 5, 9, 9, 10, 19, 112, 234, 346
);
@Parameter(0)
public double a;
@Parameter(1)
public double b;
@Parameter(2)
public double expected;
@BeforeClass
public static void beforeClass()
System.out.println("Before Class");
@Before
public void setUp() throws Exception
System.out.println("Before");
@Test
public void testAdd()
assertEquals(expected, new Calculator().add(a, b), 0.001);
@Test
public void testDivide()
assertEquals(2, new Calculator().divide(4, 2), 0.001);
@After
public void tearDown() throws Exception
System.out.println("After");
@AfterClass
public static void afterClass()
System.out.println("After Class");
单个测试数据
返回Iterable或者Object数组
@Parameters
public static Iterable<? extends Object> data()
return Arrays.asList("first test", "second test");
or
@Parameters
public static Object[] data()
return new Object[] "first test", "second test" ;
区分每组测试数据
在@Parameters注解中为魅族测试用例指定名称,占位符如下:
index 测试用例编号
0, 1, 2.... 参数编号
@Parameters(name = "No.index:0+1?=2")
多线程测试
测试类之间存在继承关系
被重写的方法不会被执行,否则先执行父类的再执行子类的
以上是关于JUnit的主要内容,如果未能解决你的问题,请参考以下文章