应用 JUnit Custom @Rule 特定的测试方法
Apply a JUnit Custom @Rule a particular test method
我可以 运行 仅针对测试中特定测试方法的自定义规则 class 吗?
public class TestClassExample
{
@Rule
public CustomRuleForOneEqualsOne customRuleForOneEqualsOne = new CustomRuleForOneEqualsOne();
@Test
public void test_OneEqualsOne()
{
assertEquals(1, 1);
}
@Test
public void test_TwoEqualsTwo()
{
assertEquals(2, 2);
}
}
在上面的测试中 class 我可以使用我的 customRuleForOneEqualsOne
规则只用于测试方法 test_OneEqualsOne
而不是 test_TwoEqualsTwo
.
我在 Stack Overflow 上看到了其他解决方案:
- 将两种测试方法移动到不同的 class [说这个选项对于特定场景不可行](或)
- JUnit: @Before only for some test methods? 如此描述 post
我可以以某种方式使用测试方法名称并跳过规则的执行
但这种方法的一个缺点是,每次我在特定 class 中对一组特定方法使用规则时,我需要将所有这些方法名称添加到列表中以查看是否找到它们,以确定其余逻辑的执行。
有没有什么方法可以在测试 class 中针对一组特定的测试方法使用自定义规则,同时在同一测试 class 中忽略其他测试方法的自定义规则?
据我所知,@Rule
适用于所有测试。因此,如果您只需要在单个 @Test
方法中使用 @Rule
,请不要使用 @Rule
。在这种情况下,您的代码将如下所示:
public class TestClassExample {
@Test
public void test_OneEqualsOne() {
CustomRuleForOneEqualsOne customRuleForOneEqualsOne = new CustomRuleForOneEqualsOne();
// use customRuleForOneEqualsOne
}
@Test
public void test_TwoEqualsTwo() {
assertEquals(2, 2);
}
}
我可以 运行 仅针对测试中特定测试方法的自定义规则 class 吗?
public class TestClassExample
{
@Rule
public CustomRuleForOneEqualsOne customRuleForOneEqualsOne = new CustomRuleForOneEqualsOne();
@Test
public void test_OneEqualsOne()
{
assertEquals(1, 1);
}
@Test
public void test_TwoEqualsTwo()
{
assertEquals(2, 2);
}
}
在上面的测试中 class 我可以使用我的 customRuleForOneEqualsOne
规则只用于测试方法 test_OneEqualsOne
而不是 test_TwoEqualsTwo
.
我在 Stack Overflow 上看到了其他解决方案:
- 将两种测试方法移动到不同的 class [说这个选项对于特定场景不可行](或)
- JUnit: @Before only for some test methods? 如此描述 post
我可以以某种方式使用测试方法名称并跳过规则的执行 但这种方法的一个缺点是,每次我在特定 class 中对一组特定方法使用规则时,我需要将所有这些方法名称添加到列表中以查看是否找到它们,以确定其余逻辑的执行。
有没有什么方法可以在测试 class 中针对一组特定的测试方法使用自定义规则,同时在同一测试 class 中忽略其他测试方法的自定义规则?
据我所知,@Rule
适用于所有测试。因此,如果您只需要在单个 @Test
方法中使用 @Rule
,请不要使用 @Rule
。在这种情况下,您的代码将如下所示:
public class TestClassExample {
@Test
public void test_OneEqualsOne() {
CustomRuleForOneEqualsOne customRuleForOneEqualsOne = new CustomRuleForOneEqualsOne();
// use customRuleForOneEqualsOne
}
@Test
public void test_TwoEqualsTwo() {
assertEquals(2, 2);
}
}