自定义测试规则

两者都有好处。扩展 ExternalResource 很方便,特别是如果我们只需要一个 before() 来设置一些东西。

但是,我们应该知道,因为 before() 方法是在 try...finally 之外执行的,所以如果在执行 before() 期间出现错误,则在 after() 中执行清理所需的任何代码都不会被执行。

这就是它在 ExternalResource 中的样子:

before();
try {
    base.evaluate();
} finally {
    after();
}

显然,如果在测试本身或其他嵌套规则中抛出任何异常,则仍将执行 after。