Junit @Rule如何运作?
2022-08-31 05:49:06
我想为大量代码编写测试用例,我想知道JUnit注释功能的详细信息,以便我可以使用它来编写测试用例。请提供一些好的答案或链接,通过一个简单的例子详细说明其功能。@Rule
我想为大量代码编写测试用例,我想知道JUnit注释功能的详细信息,以便我可以使用它来编写测试用例。请提供一些好的答案或链接,通过一个简单的例子详细说明其功能。@Rule
规则用于添加适用于测试类中所有测试的其他功能,但方式更通用。
例如,ExternalResource 在测试方法之前和之后执行代码,而不必使用 和 。使用 而不是 和 为更好的代码重用提供了机会;可以从两个不同的测试类中使用相同的规则。@Before
@After
ExternalResource
@Before
@After
该设计基于:JUnit中的拦截器
有关更多信息,请参阅 JUnit wiki :规则。
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 规则。
这是一个有用的链接供参考: