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的主要内容,如果未能解决你的问题,请参考以下文章

JUnitJUnit 假设测试

JUnitJUnit 异常测试

JUnitJUnit 参数化测试

JUnitJUnit 理论(Theory)测试

JUnitJUnit 与 maven 集成

JUnitJUnit Assert 断言