程序员每天写500字

重构三部曲(二):单元测试篇

2019-01-17  本文已影响4人  LY丶Smile

前言

接上篇 重构三部曲(一):思想准备篇

思想准备

关于单元测试

关于TDD(测试驱动开发)

Eclipse 中JUnit 5的使用

项目右键 -> properties -> Java Build path -> Add Library -> Junit -> JUnit 5 -> finish

关键步骤如下图

image.png 选择JUnit版本

代码覆盖率工具-Jacoco

搜索EclEmma image.png

注解

注解 用途
@Test 表明一个测试方法
@DisplayName 测试类或方法的显示名称
@BeforeEach 表明在单个测试方法运行之前执行的方法
@BeforeAll 表明在所有测试方法运行之前执行的方法
@AfterEach 表明在单个测试方法运行之后执行的方法
@AfterAll 表明在所有测试方法运行之后执行的方法
@Disabled 禁用测试类或方法
@Tag 为测试类或方法添加标签

简单示例

class FirstTDDSpec {

    private FirstTDD testd;
    
    
    @BeforeAll
    static void initAll() {
        System.out.println("@BeforeAll 初始化……");
    }
    
    @BeforeEach
    void beforeEachTest() {
        System.out.println("@BeforeEach 初始化……");
        testd = new FirstTDD();
    }
    
    @AfterAll
    static void destoryAll() {
        System.out.println("@AfterAll 所有测试执行完毕,执行销毁操作……");
    }
    
    @AfterEach
    void detory() {
        System.out.println("@AfterEach 当前测试执行完毕,执行销毁操作……");
    }
    
    
    @Test
    void whenTheGameIsStartedTheBoardIsEmpty() {
        Assert.assertEquals(0, testd.getNumberOfDiscs());
    }

    @Test
    @DisplayName("第一个mock测试方法")
    void MyFirstMockTest() {
        HelloModel mockHelloModel = Mockito.spy(HelloModel.class);
        mockHelloModel.setUserName("jack");
        mockHelloModel.setPassword("123456");
        Assert.assertEquals("jack", mockHelloModel.getUserName());
    }
    
    @Test
    void whenDiscOutsideBoardThenRuntimeException() {
        int column = -1;
        assertThrows(RuntimeException.class, () -> testd.putDiscInColumn(column));
    }
}
执行结果

参考网站

JUnit 5 新特性
JUnit 5 User Guide
Jacoco+Eclipse简单操作

上一篇 下一篇

猜你喜欢

热点阅读