2010-04-23 15 views
12

Con la pregunta 'How to run all tests belonging to a certain Category?' and the answer, ¿sería mejor el siguiente enfoque para la organización de pruebas?¿Las suites de pruebas de renderizado JUnit 4.8.1 @Category son casi obsoletas?

  1. definen conjunto de pruebas principal que contiene todas las pruebas (por ejemplo, usando ClasspathSuite)
  2. diseño conjunto suficiente de categorías JUnit (suficiente significa que cada colección deseable de pruebas es identificable por una o más categorías)
  3. calificar cada prueba con categoría correspondiente (es) de
  4. definir dirigidos de pruebas basados ​​en conjunto de pruebas maestro y conjunto de categorías

Ejemplo:

  • identificar categorías de velocidad (lenta, rápida), dependencias (maqueta, bases de datos, de integración, etc.), la función de relleno (en categorías aplicables), Dominio (relleno en las categorías aplicables), etc.
  • exigen que cada prueba esté debidamente calificada (etiquetada) con un conjunto relevante de categorías.
  • crear conjunto de prueba maestra utilizando ClasspathSuite (todas las pruebas se encuentran en classpath)
  • crear suites específicas al calificar el conjunto de pruebas maestras con categorías, p. conjunto de pruebas de simulacro, conjunto de pruebas de base de datos rápida, lenta integración de banco de pruebas de dominio X, etc.

Mi pregunta es más parecido a solicitar tasa de aprobación para tal enfoque vs. aproximación clásica serie de pruebas. Un beneficio insuperable es que cada nueva prueba es contenida inmediatamente por suites relevantes sin mantenimiento de suite. Una concierne es la categorización adecuada de cada prueba.

+0

entrada de blog añadida: http://novyden.blogspot.com/2011/06/using-junit-4-categories-to-replace.html – topchef

+0

Yo diría ** sí **. Pero nunca entendí las suites JUnit tradicionales de todos modos. :) ¡Tal molestia que mantiene la información de la categoría en un lugar separado! Si no fuera por las nuevas @Categories & ClasspathSuite, aún preferiría simples [naming patterns] (http://stackoverflow.com/questions/6202579/can-ant-categorise-junit-tests-based-on- hierarchy-hierarchy/6280134 # 6280134). +1 por hacer una buena pregunta. – Jonik

+1

@Jonik - gracias. El enfoque de naming pattern es definitivamente un truco con respecto a las pruebas. Y como tal, no es muy flexible ya que no permite mezclar y combinar pruebas en diferentes suites basadas en múltiples categorías. También me gusta pensar que el nombre de la prueba refleja su propósito, no sus propiedades. – topchef

Respuesta

7

Una de las ventajas que debe tener en cuenta es en mi humilde opinión que las categorías se definen dentro de las pruebas y las suites se definen fuera. Esto significa que cuando utiliza suites, usted sabe qué pruebas se ejecutarán, pero cuando usa categorías, no las conoce a menos que inspeccione las pruebas o simplemente las ejecute. Al mismo tiempo, cuando mira la prueba usando suites de prueba, no sabe en qué suite está contenida, a menos que verifique sus suites, pero usando categorías, lo verá de inmediato.

+0

punto válido. Depende de cuán importante sea una forma de inspeccionar las pruebas o la otra para un equipo. Puedo esperar que con el abrazar las categorías las prioridades cambien. Las categorías en mi humilde opinión se ajustan mejor a la anotación/unidad declarativa. – topchef

+0

El problema con las categorías, aunque también me gustan, es que tienen un nivel meta superior a las pruebas y, por lo tanto, se pierde cierta información. Para presentar ese punto, imagine tener muchas categorías y un error tipográfico: no lo encontrará (AFAIK).Con las Suites tiene verificación de tipo para asegurarse de que utilizó nombres válidos. Diría que este es un problema que se puede generalizar en la discusión de JUnit3 vs JUnit4. 4 es más poderoso, pero está más lejos del lenguaje real (porque las anotaciones son solo metadatos, no metaprogramación) y 3 aunque no tan flexible, es (relativly) solo otro código Java. –

+0

las anotaciones son metadatos convertidos en programación declarativa en muchos casos ... Acepto que uno siempre tiene que encontrar el equilibrio adecuado al usarlos. Si piensa en esta prueba, las suites tienen un nivel más alto que las pruebas también: no traen nuevas pruebas, simplemente las organizan en función de los objetivos y las prioridades. Esa debería ser la razón por la cual JUnit 4 movió suites a la anotación propiamente dicha. – topchef

Cuestiones relacionadas