Estoy creando un TemporaryFolder
usando la anotación @Rule
en JUnit 4.7. Intenté crear una nueva carpeta que sea hija de la carpeta temp usando tempFolder.newFolder("someFolder")
en el método @Before
(configuración) de mi prueba. Parece que la carpeta temporal se inicializa después de que se ejecuta el método de instalación, lo que significa que no puedo usar la carpeta temporal en el método de instalación. ¿Es este comportamiento correcto (y predecible)?JUnit Rule TemporaryFolder
Respuesta
Esto es un problema en Junit 4.7. Si actualiza un Junit más nuevo (por ejemplo, 4.8.1), todos los @Rule se ejecutarán cuando ingrese el método @Before: s. Un informe de error relacionado es este: https://github.com/junit-team/junit4/issues/79
Esto también funciona. EDITAR si en el método @Before parece que se ha llamado myfolder.create(). Y esta es probablemente una mala práctica ya que el javadoc dice que no llame a TemporaryFolder.create(). 2nd Edit Parece que debe llamar al método para crear los directorios temporales si no los quiere en los métodos @Test. También asegúrese de cerrar todos los archivos que abra en el directorio temporal o no se eliminarán automáticamente.
<imports excluded>
public class MyTest {
@Rule
public TemporaryFolder myfolder = new TemporaryFolder();
private File otherFolder;
private File normalFolder;
private File file;
public void createDirs() throws Exception {
File tempFolder = myfolder.newFolder("folder");
File normalFolder = new File(tempFolder, "normal");
normalFolder.mkdir();
File file = new File(normalFolder, "file.txt");
PrintWriter out = new PrintWriter(file);
out.println("hello world");
out.flush();
out.close();
}
@Test
public void testSomething() {
createDirs();
....
}
}
Si bien esto crea una nueva carpeta, tempFolder no está realmente en una ubicación temporal (está en su directorio de trabajo) porque myFolder no se ha establecido en una ubicación temporal. No se limpiará tampoco. –
Esto deja los directorios en el directorio $ TEMP o% TEMP% por lo que sigue buscando una respuesta real. –
- 1. JUnit Regla TemporaryFolder lanza arbitrariamente una IOException
- 2. JUnit @Rule interacción del ciclo de vida con @Antes de
- 3. ¿TestNG es compatible con @Rule de JUnit4?
- 4. Cómo gestionar el pedido de @ Rule cuando son dependientes entre sí
- 5. Cómo aplicar un JUnit @Rule para todos los casos de prueba en un conjunto
- 6. Aplicar '@Rule' después de cada '@Test' y antes de cada '@ After' en JUnit
- 7. .htaccess! -f rule not working
- 8. GBM Rule Generation - Consejo de codificación
- 9. Java Rule Engine para Game AI
- 10. create iptables rule por proceso/servicio
- 11. ¿Cómo puedo usar JUnit ExpectedException en Scala?
- 12. JUnit - assertSame
- 13. junit annotation
- 14. AsyncTask Threading Rule - ¿Se puede usar solo una vez?
- 15. ¿Qué es un buen Business Rule Engine (BRE) para .Net?
- 16. Las diferencias entre JUnit 3 y JUnit 4
- 17. @parameters en Junit 4
- 18. JUnit TestCase objeto instanciación
- 19. Agrupando pruebas de JUnit
- 20. JUnit pruebas opcionales/requeridos
- 21. JUnit Exception Testing
- 22. Método protegido Junit
- 23. spring junit testing
- 24. Mockito, JUnit y Spring
- 25. Ant JUnit ClassNotFoundException
- 26. JUnit ciclo de vida
- 27. Cómo obtener JUnit versión
- 28. JUnit y Android?
- 29. Junit output y OutOfMemoryError
- 30. básico jUnit Preguntas
gracias. tendré que actualizar –
No quisiera que incluso con JUnit 4.8.2 que en Windows 7 la regla TemporaryFolder no funcione correctamente. Parece que es un problema de permisos. – exception
el enlace está roto; trabajando uno: https://github.com/junit-team/junit4/issues/79 – jwd