我有一个这样的单元测试,使用
org.junit.contrib.java.lang.system.ExpectedSystemExit
org.junit.rules.TemporaryFolder
@Rule
public TemporaryFolder folder = new TemporaryFolder();
@Rule
public final ExpectedSystemExit exit = ExpectedSystemExit.none();
@Test
public void createsFile_integrationTest() throws Exception{
final File tempFolder = folder.newFolder("temp");
exit.expectSystemExitWithStatus(0);
exit.checkAssertionAfterwards(new Assertion() {
@Override
public void checkAssertion() throws Exception {
assertTrue(new File(tempFolder.getAbsolutePath() + "/created-file.txt").exists());
}
main.run(tempFolder.getAbsolutePath() +"/created-file.txt");
});
问题在于,临时文件夹在系统退出后立即开始拆除,而不是在checkAssertion()
调用 my 之后。
有没有办法可以防止我的临时文件夹被拆除,直到 checkAssertion 结束?
编辑:我认为答案是 - 进行重构并将它们分成两个测试 - 一个测试系统退出,另一个测试文件创建。