папка еще не создана ошибка при использовании временной папки JUnit в тестовом классе

Я получаю сообщение об ошибке «временная папка еще не создана», которая возникает из-за 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);
  }
}

person olkoza    schedule 03.07.2015    source источник


Ответы (1)


Вы используете тесты JUnit 3, которые не поддерживают правила. Для этого вам нужно использовать тест JUnit 4. Следовательно

  • Удалите extends TestCase из определения класса.
  • Удалите конструктор, setUp и метод tearDown.
  • Добавьте аннотацию @Test ко всем методам тестирования (общедоступные методы, которые начинаются с test.)

должен сделать миграцию. После этого вам нужно удалить строку

folder = new TemporaryFolder();

с testWriterAndReader.

Дополнительные сведения о миграции: Best способ автоматического переноса тестов с JUnit 3 на JUnit 4?

person Stefan Birkner    schedule 03.07.2015