2015-07-03 8 views
3

Я получаю эту ошибку:«папка не была создана» ошибка при использовании Junit временной папки в TestClass

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

ответ

2

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

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

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

folder = new TemporaryFolder(); 

из testWriterAndReader.

Дополнительную информацию о переезде: Best way to automagically migrate tests from JUnit 3 to JUnit 4?