¿Cómo establecer de forma predeterminada el directorio de trabajo para las configuraciones de inicio de JUnit en Eclipse?

StackOverflow https://stackoverflow.com/questions/119832

Pregunta

Nuestro código Java (no el código de prueba) lee archivos del directorio actual, lo que significa que el directorio de trabajo debe configurarse correctamente cada vez que ejecutamos el código.

Al iniciar una prueba JUnit desde Eclipse, se crea automáticamente una configuración de inicio.El problema es que el directorio de trabajo en esa configuración de inicio siempre es por defecto el directorio raíz del proyecto, lo cual siempre es incorrecto, la prueba falla, tengo que abrir el cuadro de diálogo de configuración de inicio, cambiar el directorio de trabajo y reiniciar la prueba.Esto es muy molesto.Lo mismo sucede cuando ejecuto un único método de prueba.

Ya he considerado estos:

  • Cambiar el directorio actual desde el código de prueba no es posible por diseño.
  • Al abrir un archivo, pase un parámetro del directorio principal; es demasiado difícil, ya que esto afectaría a muchos lugares.
  • Utilizar el Copiar configuración de lanzamiento Característica de Eclipse para crear nuevas configuraciones de lanzamiento a partir de las existentes que ya tienen un directorio de trabajo correcto configurado.Esto realmente no tiene sentido aquí, ya que me gustaría iniciar una prueba o un método de prueba rápidamente, simplemente invocando "ejecutar esta prueba/método como prueba JUnit".

Con todo, parece que es responsabilidad de Eclipse, no del código.

¿Hay alguna manera de configurar el por defecto directorio de trabajo para todo futuro, recién creado ¿Configuraciones de lanzamiento de JUnit?

¿Fue útil?

Solución 2

Hasta donde puedo decir, no hay forma de cambiar el directorio de trabajo predeterminado para futuras configuraciones de lanzamiento de JUnit en Eclipse 3.4.Esta cuestión también ha sido reportado como un error en la base de datos de errores de Eclipse.

Sin embargo, es posible en IDEA.Ahí está el Editar valores predeterminados Botón para configurar todo tipo de valores predeterminados para cada tipo de configuración de inicio por separado.

Otros consejos

Esta es una respuesta subjetiva:

Creo que estás haciendo mal tus pruebas, no deberías cargar los archivos desde JUnit usando rutas relativas o completas, sino tenerlos como recursos en el proyecto (agregarlos a la ruta de compilación) y cargarlos como recursos. en las pruebas JUnit.De esta manera, si algo cambia en el sistema de archivos, alguien usa un sistema de archivos o IDE diferente pero aún los tiene en la ruta de compilación (como carpetas de origen), no tendrá ningún problema.

No estoy seguro de si esto es lo que quieres decir, pero si realmente quieres cambiarlo, ve a las opciones de Configuración de ejecución -> Tu JUnit -> pestaña Argumentos, en la parte inferior (Eclipse 3.4) verás Directorio de trabajo, haz clic en 'otro' y cambiarlo desde allí.

Con Eclipse 3 puedes configurar tu directorio de trabajo.Vaya a su configuración de ejecución/depuración -> pestaña Argumentos.En el directorio de trabajo seleccione "otro" e ingrese la raíz de su prueba

No he encontrado la posibilidad de hacer esto, pero lo que puedes hacer es usar:

getClass().getResourceAsStream(nombre de archivo);

getClass().getClassLoader().getResourceAsStream(nombre de archivo);

Este método ubica un recurso en el classpath.El primero es relativo a la ubicación de la clase, el segundo es relativo a cualquier "entrada raíz" de classpath.Luego puede, por ejemplo, agregar el directorio raíz del proyecto al classpath.

Sin embargo, esto no funciona si también desea escribir en un archivo.

Si sus pruebas dependen del directorio de trabajo actual, creo que es responsabilidad de sus pruebas configurar correctamente ese directorio de trabajo y configurar sus clases para que se prueben para apuntar a ese directorio.

Si tiene una superclase para la mayoría de sus pruebas, escriba una constante dentro de ella.O:Si tiene una superclase para la mayoría de sus pruebas, escriba un método de configuración @Before.O:Si no tiene una superclase para la mayoría de sus pruebas, escriba una constante en alguna clase del código base de prueba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top