2012-04-17 10 views
8

Jestem stoi dziwny problem, tutaj ...JUnit Zasada TemporaryFolder arbitralnie rzuca IOException

Mam JUnit wykonawczych kilka testów. Ta klasa wygląda następująco:

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 
    } 
} 

Ta klasa testowa była używana w moim poprzednim środowisku i nadal działa w Continuum.

Jednak przy uruchamianiu z Eclipse none, niektóre lub wszystkie testy arbitralnie rzucać IOException takich jak:

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) 

Mam dokładnie ten sam problem z uruchomieniem JUnit JUnit 4.9 lub 4.10 ...

Jak mogę to naprawić, aby działał poprawnie?

+0

To powinno zadziałać. Który "Runner" używasz do przeprowadzenia testów? Czy są współbieżne? Możesz chcieć więcej debugować, tzn. Zmienić zmienną 'folder' również, aby wskazywała, kiedy pojawia się problem. –

+0

Czy możesz powiedzieć, co robisz w testach? Czy piszesz do plików? Czy masz uruchomioną indeksację systemu Windows? –

+0

Tak, celem programu jest przetwarzanie danych i zapisywanie pliku jako pliku wyjściowego. Żadna indeksacja systemu Windows nie jest uruchomiona. –

Odpowiedz

1

Powinieneś spróbować wyłączyć ochronę antywirusową.

Miałem ten sam problem, a po wyłączeniu Kaspersky wszystko działało dobrze.

0

Wygląda na to, że może to być bardziej problem związany z systemem Windows niż JUnit. W pewnym sensie możesz nie mieć prawa do tworzenia folderów/plików podczas logowania jako "użytkownik z ograniczonymi uprawnieniami".

Myślę, że można spróbować tworzenia folderu tymczasowego yourslef, jak JUnit robi:

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

Jeśli powyższe stwierdzenie rzuca ten sam błąd, należy zbadać swoje prawa użytkownika systemu Windows, może spróbuj uruchomić test pod użytkownik "pełnych praw".

Powiązane problemy