public class SimpleExpectedExceptionTest {
@Rule
public ExpectedException thrown= ExpectedException.none();
@Test
public void throwsNothing() {
// no exception expected, none thrown: passes.
}
@Test
public void throwsExceptionWithSpecificType() {
thrown.expect(NullPointerException.class);
throw new NullPointerException();
}
}
有效。但是,如果测试以不同的顺序运行怎么办? @Rule注释是否告诉JUnit在每次测试后重置其状态?
答案 0 :(得分:2)
是的,每次运行的测试都会重置规则。
JUnit的关键之一是测试从不依赖于订单
答案 1 :(得分:2)
JUnit测试是孤立运行的。对于每个单独的测试,(默认)测试运行器将创建测试类的新实例,并且仅调用单个测试方法(以及@Before
和@After
方法)。因此,除非您创建一些受顺序影响的静态(或外部)依赖,否则测试执行的顺序对结果没有影响。