Junit使用笔记

Junit的所有测试方法都是以@Test修饰,以public void 开头。如下:

@Test
public void testAdd() {
    assertEquals(0, new Calculate().add(0, 1));
}

@BeforeClass && @AfterClass 都是只会执行一次,@BeforeClass是在类加载的时候执行,@AfterClass 是整个类结束的时候被执行,整个方法是一个静态方法。

@BeforeClass
public static void setUpBeforeClass() throws Exception {
    System.out.println("before class");
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
    System.out.println("after class");
}

@Before && @After两个方法是在每个测试方法执行的执行都会被执行,@Before是在方法执行前执行,@After是在方法执行结束后执行。

@Before
public void setUp() throws Exception {
    System.out.println("before");
}

@After
public void tearDown() throws Exception {
    System.out.println("after");
}

@Ignore 所修饰的测试方法会被测试运行器忽略,例如以下的test1方法就会被测试运行器忽略执行。

@Ignore
@Test
public void test1() {
    System.out.println("test1");
}

@Test(timeout=毫秒),用来指定时间上限,如果这个测试方法的执行时间超过了这个时间值则测试失败。

// 会执行失败,因为sleep的时间长于设定的timeout时间
@Test(timeout=1000)
public void test() {
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

@Test(expected=异常类),用expected来指定应该抛出的异常,如果在执行过程中没有抛出异常或者抛出的异常不是指定的异常,则测试失败。

// 这个测试案例会执行成功,因为指定的异常就是程序要抛出的异常
@Test(expected=IndexOutOfBoundsException.class) 
public void outOfBounds() 
{
    new ArrayList().get(1);
}
 
 

测试套件就是组织所要测试的类一起运行,如果单个类单独的运行是比较麻烦的,可以使用测试套件一起运行这些测试类。需要注意的是:

  • 测试套件的类是不包含其他任何方法
  • 同时要更改测试运行器为Suite.class
  • 将要测试的类作为数组传入到SuiteClasses({})中
// 更改测试运行器以及将要测试的类放入SuiteClasses中
  @RunWith(Suite.class)
  @SuiteClasses({ AppTest.class, CalculateTest.class, JunitFlowTest.class })
  public class AllTests {
      // 没有测试方法
  }

你可能感兴趣的:(Junit使用笔记)