JUnit:@Before只针对一些测试方法?

我有一些常见的设置代码,我已经考虑了一个标有@Before的方法。 但是,并非所有这些代码都必须针对每个测试运行。 有没有办法对它进行标记,以便@Before方法仅在某些测试之前运行?

只需将不需要设置代码的测试移到单独的测试类中即可。 如果你有一些常见的测试常用的代码,那就把它移到一个帮助器类中。

或者使用TestNG 。 它为您提供更精细的测试控制。

也可以通过JUnit的Assume来实现。 然后,您可以检查要处理@Before的方法名称。

 public class MyTest { @Rule public TestName testName = new TestName(); @Before public void setUp() { assumeTrue(testName.getMethodName().equals("myMethodName")); // setup follows } } 

查看主题以获取有关@Rule更多见解。

不确定@Before,但我最近提出了一个策略,让@After块有选择地运行。 实施很直接。 我有一些标志设置为默认值作为测试类的一部分。 它们在@Before类中重置为默认值。 在类中我需要做一些特定于标志的事情,我在@After中设置这些标志并检查标志值以执行相应的作业。