Junit @Rule如何运作?

2022-08-31 05:49:06

我想为大量代码编写测试用例,我想知道JUnit注释功能的详细信息,以便我可以使用它来编写测试用例。请提供一些好的答案或链接,通过一个简单的例子详细说明其功能。@Rule


答案 1

规则用于添加适用于测试类中所有测试的其他功能,但方式更通用。

例如,ExternalResource 在测试方法之前和之后执行代码,而不必使用 和 。使用 而不是 和 为更好的代码重用提供了机会;可以从两个不同的测试类中使用相同的规则。@Before@AfterExternalResource@Before@After

该设计基于:JUnit中的拦截器

有关更多信息,请参阅 JUnit wiki :规则


答案 2

Junit Rules的工作原理是AOP(面向方面的编程)。它拦截测试方法,从而提供了在执行特定测试方法之前或之后做一些事情的机会。

以以下代码为例:

public class JunitRuleTest {

  @Rule
  public TemporaryFolder tempFolder = new TemporaryFolder();

  @Test
  public void testRule() throws IOException {
    File newFolder = tempFolder.newFolder("Temp Folder");
    assertTrue(newFolder.exists());
  }
} 

每次执行上述测试方法时,都会创建一个临时文件夹,并在执行该方法后将其删除。这是 Junit 提供的开箱即用规则的一个示例。

类似的行为也可以通过创建我们自己的规则来实现。Junit 提供了 TestRule 接口,可以实现该接口来创建我们自己的 Junit 规则。

这是一个有用的链接供参考:


推荐