2012-04-17 8 views
8

Estoy frente a un problema raro aquí ...JUnit Regla TemporaryFolder lanza arbitrariamente una IOException

Tengo un JUnit la implementación de algunas pruebas. Esta clase tiene el siguiente aspecto:

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

Esta clase de prueba solía funcionar en mi entorno anterior y todavía lo hace en Continuum.

Sin embargo, cuando se lanza desde Eclipse ninguna, alguna o todas las pruebas de forma arbitraria lanzar una IOException tales como:

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) 

Tengo exactamente el mismo problema al ejecutar JUnit JUnit 4.9 o 4.10 ...

¿Cómo puedo solucionar eso para que funcione correctamente?

+0

Eso debería funcionar. ¿Qué 'Runner' estás usando para ejecutar las pruebas? ¿Son concurrentes? Es posible que desee depurar más, es decir, que la variable 'folder' también vea dónde apunta cuando se produce el problema. –

+0

¿Puedes decir lo que estás haciendo en las pruebas? ¿Estás escribiendo en los archivos? Además, ¿ejecuta la indexación de Windows? –

+0

Sí, el objetivo del programa es procesar datos y escribir un archivo como salida. No se está ejecutando la indexación de Windows. –

Respuesta

1

Debería intentar deshabilitar su protección antivirus.

Estaba teniendo el mismo problema, y ​​después de deshabilitar Kaspersky todo estaba funcionando bien.

0

Por lo que parece, esto podría ser más un problema relacionado con Windows que un JUnit. De alguna manera, podría perder el derecho de crear carpetas/archivos al iniciar sesión como un "usuario con derechos limitados".

Creo que se puede tratar de crear un yourslef carpeta temporal, al igual que JUnit hace:

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

Si la declaración anterior arroja el mismo error, se debe investigar sus derechos de usuario de Windows, puede que intente ejecutar la prueba en un usuario de "derechos completos".

Cuestiones relacionadas