我有一些將文件寫入我選擇的目錄的代碼。我目前有一個測試,它使用JUnit Theories來運行這個代碼與許多不同的目錄。它看起來類似於:創建用於靜態方法的靜態方法中的Junit測試的臨時目錄
@DataPoints
public static File[] produceListOfDirs() {
return new File[] {
new File("some directory path here")
}
}
@Theory
public void myTest(File f) {
... run my code being tested with f ...
}
的問題是,我想有獲得創建的目錄(以及獲得在其中創建的文件)測試完成移除(無論是成功或失敗)。
理想的應該只是使用@Rule
來指定一個臨時目錄&使用它:
@Rule
public TemporaryFolder testFolder = new TemporaryFolder();
@DataPoints
public static File[] produceListOfDirs() {
return new File[] {
new File(testFolder.getRoot())
}
}
@Theory
public void myTest(File f) {
... run my code being tested with f ...
}
但是,當然,這裏的問題是,@DataPoints只能註釋靜態方法和TemporaryFolder規則必須不是靜止的。
任何優雅的解決方案呢?
@AdamParkin這會適合您的情況嗎? –
完美,像魅力一樣工作。儘管'@ After'方法中有一個錯字,如果它存在(如果exists()檢查前面的'!'否定不應該存在),那麼該目錄應該被刪除。唯一不同的是我通過'UUID'隨機創建目錄名稱,將它放入系統範圍的臨時目錄並在try/catch中包含'deleteDirectory()'調用。要點:https://gist.github.com/pzelnip/6080964 –
@AdamParkin真棒的東西!我希望能夠從您那裏聽到這個消息。很好的問題! –