在testclass中使用JUnit临时文件夹时出现"尚未创建文件夹"错误

olk*_*oza 7 java junit temporary-directory

我收到错误"尚未创建临时文件夹",该错误来自方法IllegalStateException抛出TemporaryFolder.getRoot().看起来它没有初始化,但我的研究表明,在setUp() - 方法中初始化临时文件夹时通常就是这种情况.但是@Rule像我一样使用它应该在我看来是有用的.有任何想法吗?

考试班

public class FileReaderTest extends TestCase {

  @Rule
  public TemporaryFolder folder = new TemporaryFolder();

  public FileReaderTest(String testName) {
    super(testName);
  }

  @Override
  protected void setUp() throws Exception {
    super.setUp();
  }

  @Override
  protected void tearDown() throws Exception {
    super.tearDown();
  }

  public void testCSVWriterAndReader() throws Exception{
    testWriterAndReader(new CSVFileWriter(), new CSVFileReader());
  }

  private void testWriterAndReader(FileWriteService writer, FileReader reader) throws Exception {
    folder = new TemporaryFolder();
    File tempFile = folder.newFile("test.csv");
    DataSet initializedData = createMockData();
    writer.writeDataSetToFile(initializedData, tempFile.getPath());
    DataSet readData = reader.getDataFromFile(new FileInputStream(tempFile));
    assertEquals(initializedData, readData);
  }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ner 5

您正在使用不支持规则的 JUnit 3 测试。为此,您必须使用 JUnit 4 测试。所以

  • extends TestCase从类定义中删除。
  • 移除构造函数、setUp 和 tearDown 方法。
  • @Test注解添加到所有测试方法(以 test 开头的公共方法。)

应该做迁移。之后你必须删除该行

folder = new TemporaryFolder();
Run Code Online (Sandbox Code Playgroud)

testWriterAndReader.

有关迁移的更多详细信息:自动将测试从 JUnit 3 迁移到 JUnit 4 的最佳方法?