当前位置: 代码迷 >> 综合 >> 单元测试~JUnit4
  详细解决方案

单元测试~JUnit4

热度:42   发布时间:2023-12-08 17:33:40.0

JUnit 4

maven 依赖管理

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

JUnit 依赖 hamcrest

<dependency><groupId>org.hamcrest</groupId><artifactId>hamcrest-core</artifactId><version>1.3</version>
</dependency>

初识JUnit4

public class Calculator {
    public int evaluate(String expression) {int sum = 0;for (String summand: expression.split("\\+"))sum += Integer.valueOf(summand);return sum;}
}
import static org.junit.Assert.assertEquals;
import org.junit.Test;public class CalculatorTest {
    @Testpublic void evaluatesExpression() {Calculator calculator = new Calculator();int sum = calculator.evaluate("1+2+3");assertEquals(6, sum);}
}

使用@Test注解标记测试方法,使用assertEquals断言判断计算结果是否与预期结果一致。这样就完成了一个单元测试代码的编写

@BeforeClass\@AfterClass 与 @Before\@After的区别

@BeforeClass \ @AfterClass @Before \ @After
在一个类中只出现一次 在一个类中可以出现多次,执行顺序不确定
方法名不做限制 方法名不做限制
在类中只运行一次 在每个测试方法之前或之后都会运行一次
必须声明为public static 必须声明为public且非static
父类中标记该注解的方法会优先于当前类中标记该注解的方法执行 父类中标记该注解的方法会优先于当前类中标记该注解的方法执行
所有标识为@AfterClass的方法都一定会被执行,即使在标识为@BeforeClass的方法抛出异常的情况下也会执行 所有标识为@After的方法都一定会被执行,即使在标识为@Before或@Test的方法抛出异常的情况下也会执行

异常测试
通过在@Test注解上添加expected参数指定异常类,当测试方法没有抛出异常或抛出一个不同的异常,则测试失败

超时测试
通过在@Test注解上添加timeout参数指定超时时间。如果测试方法运行时间超过指定的毫秒数,则测试失败

JUnit为单元测试提供了一个默认的测试运行器BlockJUnit4ClassRuner,为了能够一次执行多个测试方法,可以使用@RunWith(Suite.class)指定Suite测试运行器,利用@SuiteClasses({Junit4TimeoutTest.class,Junit4ExceptionTest.class})指定要运行的测试用例

  相关解决方案