Actualmente estoy reutilizando las pruebas JUnit 4 de otro proyecto contra mi código. Los obtengo directamente del repositorio del otro proyecto como parte de mi compilación Ant automatizada. Esto es genial, ya que asegura que mantengo mi código verde contra la última versión de las pruebas.Excluir métodos de prueba JUnit individuales sin modificar la clase de prueba?
Sin embargo, hay un subconjunto de pruebas que nunca espero pasar en mi código. Pero si empiezo a agregar anotaciones @Ignore a esas pruebas, tendré que mantener mi propia copia separada de la implementación de la prueba, que I realmente no quiero hacer.
¿Hay alguna manera de excluir las pruebas individuales sin modificar la fuente de prueba? Esto es lo que he visto hasta ahora:
Por lo que yo puedo ver, la tarea Ant JUnit sólo se le permite excluir clases de prueba completos, no a los métodos de ensayo individuales - por lo que no es bueno para mí, necesito granularidad del método.
Consideré armar un TestSuite que utiliza la reflexión para buscar y agregar dinámicamente todas las pruebas originales, luego agregar código para eliminar explícitamente las pruebas que no quiero ejecutar. Pero abandoné esa idea cuando noté que el TestSuite API no proporciona un método para eliminar las pruebas.
Puedo crear mis propias clases de prueba que extienden las clases de prueba originales, anulan las pruebas específicas que no quiero ejecutar y las anotan con @Ignore. Luego ejecuto JUnit en mis subclases. La desventaja aquí es que si se agregan nuevas clases de prueba al proyecto original, no las recogeré automáticamente. Tendré que supervisar las nuevas clases de prueba a medida que se agregan al proyecto original. Esta es mi mejor opción hasta ahora, pero no me parece ideal.
La única otra opción que se me ocurre es ejecutar las malas pruebas de todos modos e ignorar las fallas. Sin embargo, estas pruebas tardan un tiempo en ejecutarse (¡y fallan!) Por lo que preferiría no ejecutarlas en absoluto. Además, no veo una manera de decirle a la tarea Ant que ignore los fallos en los métodos de prueba específicos (una vez más, veo cómo se puede hacer para las clases de prueba individuales, pero no para los métodos).
No, desafortunadamente tengo que excluir métodos de prueba específicos. Es decir, quiero ejecutar algunas pruebas en una clase de prueba determinada, pero no en otras. – rewbs