我有一些使用 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
时,我发现在某些情况下,在我的TemporaryFolder
实例中的Statement
被应用之前会调用init()
方法。因此,在使用init()
时,临时文件夹位置未设置(即null
),我的文件最终位于工作目录而不是/tmp
。所以,在某些情况下,
@Before
方法比规则先执行,然而我无法确定一个明确的模式。我有时也会看到我的一些规则实施类似的问题。是否有任何方法可以确保我的规则语句在任何设置方法之前应用?