【发布时间】:2011-12-06 00:51:41
【问题描述】:
我有一些使用 TemporaryFolder @Rule 的 JUnit 测试。他们在@Before 方法中使用TemporaryFolder 来执行一些设置:
@Rule
public TemporaryFolder folder = new TemporaryFolder();
@Before
public void init() {
folder.newFile("my-file.txt");
}
@Test
public void myTest() { ... }
大多数情况下,这都能完美运行。但是,当使用SpringJUnit4ClassRunner 时,我发现在某些情况下,init() 方法在我的TemporaryFolder 实例中的Statement 被应用之前被调用。因此,当在folder 中使用init() 并且我的文件最终位于工作目录而不是/tmp 时,临时文件夹位置未设置(即:null)。
所以在某些情况下@Before 方法会在规则之前执行,但是,我无法建立明确的模式。我偶尔会在我自己的一些规则实现中看到类似的问题。
有什么方法可以确保在任何设置方法之前应用我的规则语句?
【问题讨论】:
标签: java junit lifecycle rules