2015-07-03 38 views
3

使用JUnit臨時文件夾時,「文件夾尚未建立」錯誤我得到這個錯誤:在識別TestClass

「臨時文件夾尚未建立」,它來源於由TemporaryFolder.getRoot拋出一個IllegalStateException () 方法。看起來它沒有被初始化,但是我的研究告訴我,這通常是在setUp()方法中初始化臨時文件夾時的情況。但像我這樣使用它@Rule應該在我看來工作。有任何想法嗎?

測試類,您正在使用的不支持規則JUnit 3測試

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 4測試。因此

  • 從類定義中刪除extends TestCase
  • 刪除構造函數,setUp和tearDown方法。
  • @Test註釋添加到所有的測試方法(與測試開始的公共方法。)

應該做的遷移。之後你必須從testWriterAndReader刪除線

folder = new TemporaryFolder(); 

有關遷移的更多詳細信息:Best way to automagically migrate tests from JUnit 3 to JUnit 4?