所以我必須寫一個字符串到文件的方法:JUnit和文件的寫訪問
public static void saveStringToFile(String path, String string) {
File file = new File(path);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
FileWriter out = null;
try {
out = new FileWriter(path);
out.write(string);
if (out != null) {
out.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
我與每個測試之前運行下面的安裝方法,測試類(每一個前刪除testfile的):
public static final String TEST_FILE = "somefile.xml";
// ...
@Before
public void setUp() throws IOException {
if (MyCustomClass.fileExists(TEST_FILE)) {
new File(TEST_FILE).delete();
}
}
我的每一個測試的嘗試使用該方法來寫一些東西到文件saveStringToFile()
。它成功了幾次,但一個隨機點我終於得到了java.io.IOException: Access is denied
。還是不知道爲什麼出現這種情況 - 有時它發生在test1的,有時TEST3 ...
它工作正常,當我使用Java7 FileIO專注,但我需要遷移回的Java6 ...
你是如何執行測試的?您的測試運行器是否可以並行運行它們,並且測試正在彼此之間嘗試訪問該文件? – Omaha
添加同步塊。 – Shark
我正在用Eclipse運行它>作爲JUnit測試運行......懷疑測試可能是平行運行的 - 我如何驗證這一點以及如何使用它? – dstronczak