11

我收到错误“尚未创建临时文件夹”,这是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);
  }
}
4

1 回答 1

5

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

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

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

folder = new TemporaryFolder();

testWriterAndReader.

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

于 2015-07-03T12:11:51.163 回答