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. Aplicar '@Rule' después de cada '@Test' y antes de cada '@ After' en JUnit
- 6. Cómo aplicar un JUnit @Rule para todos los casos de prueba en un conjunto
- 7. .htaccess! -f rule not working
- 8. create iptables rule por proceso/servicio
- 9. GBM Rule Generation - Consejo de codificación
- 10. Java Rule Engine para Game AI
- 11. ¿Cómo puedo usar JUnit ExpectedException en Scala?
- 12. junit annotation
- 13. JUnit - assertSame
- 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. JUnit ciclo de vida
- 18. JUnit TestCase objeto instanciación
- 19. java.lang.NoClassDefFoundError en junit
- 20. básico jUnit Preguntas
- 21. CollectionAssert in jUnit?
- 22. Alternativas a JUnit
- 23. Interceptar JUnit Assert functions
- 24. Cómo obtener JUnit versión
- 25. Método protegido Junit
- 26. Jenkins y JUnit
- 27. Ant JUnit ClassNotFoundException
- 28. Prueba JUnit para System.out.println()
- 29. Junit output y OutOfMemoryError
- 30. JUnit Eclipse Plugin?
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