为什么JUnit的ExpectedException不会导致不可预测的状态?

时间:2015-01-09 17:09:47

标签: java junit expected-exception

来自documentation

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在每次测试后重置其状态?

2 个答案:

答案 0 :(得分:2)

是的,每次运行的测试都会重置规则。

JUnit的关键之一是测试从不依赖于订单

答案 1 :(得分:2)

JUnit测试是孤立运行的。对于每个单独的测试,(默认)测试运行器将创建测试类的新实例,并且仅调用单个测试方法(以及@Before@After方法)。因此,除非您创建一些受顺序影响的静态(或外部)依赖,否则测试执行的顺序对结果没有影响。