美文网首页
单元测试-JUnit

单元测试-JUnit

作者: 张明学 | 来源:发表于2020-04-20 15:19 被阅读0次

java单元测试是最小的功能单元测试代码, 单元测试就是针对单个java方法的测试。相比较于main方法进行测试,main方法会把测试代码和业务代码耦合在一起。并且JUnit单元测试可以设置期望值。

Jar依赖

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
</dependency>

断言

断言的使用, 必须先引入必须的包

import static org.junit.Assert.*;

测试用例

@Slf4j
public class TestDemo1 {

    Val val = null;

    /**
     * 初始化非常耗时的资源, 例如创建数据库
     */
    @BeforeClass
    public static void beforeClass() {
        log.info("-->beforeClass");
    }

    /**
     * 单元测试执行之前执行,用于初始化测试资源
     */
    @Before
    public void before() {
        log.info("-->before");
        val = new Val();
    }

    /**
     * timeout设置超时时间
     */
    @Test(timeout = 300)
    public void test1() {
        log.info("单元测试1");
        Long result = val.parse("123");
        Assert.assertEquals(new Long(123), result);
    }

    /**
     * 期望出现异常NumberFormatException,没有异常则用户不通过
     */
    @Test(expected = NumberFormatException.class)
    public void test2() {
        log.info("单元测试2");
        Long result = val.parse("a");
        Assert.assertEquals(new Long(123), result);
    }

    /**
     * 单元测试执行完毕后执行,用于关于测试资源
     */
    @After
    public void after() {
        log.info("-->after");
    }

    /**
     * 清理@BeforeClass创建的资源, 例如创建数据库
     */
    @AfterClass
    public static void AfterClass() {
        log.info("-->AfterClass");
    }
}

结果:

[    main]-->beforeClass
[    main]-->before
[    main]单元测试1
[    main]-->after
[    main]-->before
[    main]单元测试2
[    main]-->after
[    main]-->AfterClass
断言的常用方法:(org.junit.Assert)

assertEquals(100, x): 断言相等
assertArrayEquals({1, 2, 3}, x): 断言数组相等
assertEquals(3.1416, x, 0.0001): 浮点数组断言相等
assertNull(x): 断言为null
assertTrue(x > 0): 断言为true
assertFalse(x < 0): 断言为false;
assertNotEquals(): 断言不相等
assertNotNull(): 断言不为null

异常测试

异常测试可以通过@Test(expected=Exception.class), 对可能发生的每种类型的异常进行测试
如果抛出了指定类型的异常, 测试成功
如果没有抛出指定类型的异常, 或者抛出的异常类型不对, 测试失败

@Before和@After

在@Before方法中初始化测试资源
在@After方法中释放测试资源
@BeforeClass: 初始化非常耗时的资源, 例如创建数据库,需要static方法
@AfterClass: 清理@BeforeClass创建的资源, 例如创建数据库,需要static方法。

参数化测试

@RunWith: 当类被@RunWith注释修饰, 或者类继承了一个被该注解类修饰的类, JUnit将会使用这个注解所指明的运行器(runner)来运行测试, 而不是JUni默认的运行器。如SpringBoot的单元测试:@RunWith(SpringRunner.class)

超时测试

@Test(timeout=1000)可以设置超时时间

相关文章

网友评论

      本文标题:单元测试-JUnit

      本文链接:https://www.haomeiwen.com/subject/enrdihtx.html