单元测试~JUnit4

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 {
  @Test
  public 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})指定要运行的测试用例

猜你喜欢

转载自blog.csdn.net/quan20111992/article/details/80185810