Pregunta

Estoy utilizando DbUnit junto con Unitils, que funciona muy bien la mayor parte del tiempo.

Hoy he encontrado un problema extraño.

La situación es la siguiente:

  • I utilizar Hibernate, y tener identificación con el "incremento" del generador:
<id name="Id">
   <generator class="increment"/>
</id>
  • preparo conjunto de datos de prueba, donde id máxima es 5.
  • utilizo estrategia de carga limpieza de inserción.
  • He test1 dos métodos de ensayo y test2, cada una fila de añadir en esta tabla.
  • Después de fila método test1 recién agregado tiene id = 6.
  • Después de fila método test2 recién creada tiene id = 7.

Esto es todo bien y me da qué esto es así. Es un problema desde la perspectiva de mantenimiento sin embargo. Si alguna vez Agregar método tercera prueba entre los dos, el método test2 de repente fallar a pesar de que nada ha cambiado, sólo porque obtendrá fila diferente, id.

¿Hay alguna forma de forzar DbUnit o Hibernate para calcular siguiente valor de identificación antes de cada método de prueba?

¿Fue útil?

Solución

En primer lugar, se debe proporcionar el conjunto completo de datos, sí con id también. Si no es así, no mida o basar su prueba sobre ids. ¿Por qué no probar? porque su cosa ya bien probado y fiable. Siempre recuerde que nunca probar bibliotecas de terceros, la mayoría de ellos ya bien probados. Sin embargo, parece casi imposible no dependiendo de ids. Estoy de acuerdo, usted debe escribir una clase simulada para hacer frente a este problema para usted, o puede ser que usted puede proporcionar algún método setter para sobrescribir el valor generado por su propia cuenta.

La segunda opción es siempre empezar el caso de prueba con el cuadro vacío. Puede escribir un accesorio para limpiar la mesa para que, antes de cada caso de prueba.

Otros consejos

La solución no es confiar en los identificadores generados:

  • que están fuera del control de la prueba.
  • si los haces controlados por la prueba, que ya no están probando el bajo prueba de clase
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top