Java 跳过测试的@Before | |有没有办法在测试规则中执行@Before方法?

Java 跳过测试的@Before | |有没有办法在测试规则中执行@Before方法?,java,unit-testing,junit4,junit-rule,Java,Unit Testing,Junit4,Junit Rule,高级,我有JUnit测试类,它非常简单。我有几个@测试和一个@测试,在此之前会进行一些设置。对于一个测试用例,设置是不同的(我不想让它运行) 从一些搜索中我找到了。这建议创建一个@Rule来检查特定的注释并执行@Before语句 我的困惑在于如何在规则中执行@Before方法。有办法吗?或者我需要通过测试类本身并执行@before方法(setup(),在下面的示例中) 相关测试代码: @Rule public NoBeforeRule mNoBeforeRule = new NoBeforeRu

高级,我有JUnit测试类,它非常简单。我有几个@测试和一个@测试,在此之前会进行一些设置。对于一个测试用例,设置是不同的(我不想让它运行)

从一些搜索中我找到了。这建议创建一个@Rule来检查特定的注释并执行@Before语句

我的困惑在于如何在规则中执行@Before方法。有办法吗?或者我需要通过测试类本身并执行@before方法(
setup()
,在下面的示例中)

相关测试代码:

@Rule public NoBeforeRule mNoBeforeRule = new NoBeforeRule(this);

@Before
@Override
public void setup() {
}

@Test
public void testNeedSetup() {
    // this should run setup()
}

@NoBefore
@Test
public void testNoSetup() {
    // this should NOT run setup()
}

也许可以玩转规则TestName

@Rule public TestName name = new TestName();

@Before 
public void setup() {
     if(listOfTestNeedSetup.contains(name.getMethodName()) {
        // need setup
     }
}

为什么不把测试分成两个独立的测试类呢?需要设置的进入一个类,而不进入另一个类

没有任何规则(甚至准则)规定一个类的所有测试都必须进入一个测试类,事实上我经常这样做

事实上,您有一个或多个不需要公共设置的测试,这可能表明这些测试本身没有内聚性,并且正在测试被测试类的不同变体。例如,我可能有一堆方法,这些方法以特定的方式对肯定测试进行模拟设置,但其他测试需要对其进行不同的配置,以用于失败场景。我将把这些测试分为两类——特别是针对正面场景的测试和针对失败场景的测试


玩弄规则和明确避免在之前运行标准的
@方法只会让事情变得更复杂,让你未来的自己或同事挠头,想知道为什么不运行安装方法

在哪里初始化
listOfTestNeedSetup
?,或者如何?,你能不能补充一下,让这个答案更具相关性,否则对我来说,这看起来像是一个部分答案。
@Rule public TestName name = new TestName();

@Before 
public void setup() {
     if(listOfTestNeedSetup.contains(name.getMethodName()) {
        // need setup
     }
}