2012-04-17 7 views
8

Ich bin hier ein seltsames Problem mit Blick auf ...JUnit Regel TemporaryFolder wirft willkürlich eine IOException

Ich habe einen JUnit ein paar Tests zu implementieren. Diese Klasse sieht wie folgt aus:

public class MyTest { 

    @Rule 
    public TemporaryFolder folder = new TemporaryFolder(); 

    @Test 
    public void myTest1() throws IOException { 
     String destinationPath = folder.newFile("destination1.txt").getPath(); 
     // Do things 
    } 

    @Test 
    public void myTest2() throws IOException { 
     String destinationPath = folder.newFile("destination2.txt").getPath(); 
     // Do things 
    } 

    @Test 
    public void myTest3() throws IOException { 
     String destinationPath = folder.newFile("destination.txt").getPath(); 
     // Do things 
    } 
} 

Diese Testklasse, die in meinem früheren Umfeld zu arbeiten und tut immer noch in Continuum.

Doch wenn von Eclipse-keine Einführung, einige oder alle Tests willkürlich ein IOException werfen wie:

java.io.IOException: The system cannot find the path specified 
    at java.io.WinNTFileSystem.createFileExclusively(Native Method) 
    at java.io.File.createNewFile(File.java:883) 
    at org.junit.rules.TemporaryFolder.newFile(TemporaryFolder.java:53) 
    at MyTest.myTest2(MyTest.java:50) 

ich genau das gleiche Problem haben, laufen JUnit 4.9 oder JUnit 4.10 ...

Wie kann ich das beheben, damit es richtig funktioniert?

+0

Das sollte funktionieren. Welchen "Runner" verwendest du zum Ausführen der Tests? Sind sie gleichzeitig? Vielleicht möchten Sie mehr debuggen, d. H. Die "Ordner" -Variable, um zu sehen, wo sie auf das Problem hinweist. –

+0

Können Sie sagen, was Sie in den Tests machen? Schreibst du in die Dateien? Haben Sie auch Windows-Indexierung ausgeführt? –

+0

Ja das Ziel des Programms ist es, Daten zu verarbeiten und eine Datei als Ausgabe zu schreiben. Es wird keine Windows-Indexierung ausgeführt. –

Antwort

1

Sie sollten versuchen, Ihren Antivirenschutz zu deaktivieren.

Ich hatte das gleiche Problem, und nach der Deaktivierung von Kaspersky alles funktioniert gut.

0

Mit dem Aussehen davon könnte dies mehr ein Windows-Problem als ein JUnit sein. Irgendwie könnte Ihnen das Recht fehlen, Ordner/Dateien zu erstellen, während Sie als "Benutzer mit eingeschränkten Rechten" angemeldet sind.

Ich denke, Sie könnten versuchen, einen temporären Ordner yourslef zu schaffen, so wie JUnit tut:

 File folder= File.createTempFile("junit", ""); 

Wenn die Aussage über den gleichen Fehler wirft, sollten Sie Ihr Windows-Benutzerrechte untersuchen, vielleicht den Test versuchen läuft unter ein "Voll Rechte" Benutzer.

Verwandte Themen