creé una clase y se reemplaza los método equals(). Cuando uso assertTrue(obj1.equals(obj2))
, pasará la prueba; sin embargo, assertEquals(obj1, obj2)
fallará la prueba. ¿Podría alguien decir la razón por qué?assertEquals JUnit() falla por dos objetos
Respuesta
Supongo que no has actualmente reemplazado equals
- que lo has sobrecargado. Utilice la anotación @Override
para encontrar este tipo de cosas en tiempo de compilación.
En otras palabras, sospecho que tienes:
public boolean equals(MyClass other)
donde se debe tener:
@Override // Force the compiler to check I'm really overriding something
public boolean equals(Object other)
En su aseveración de trabajo, que fueron, sin duda, una llamada al método sobrecargado como el tipo en tiempo de compilación de obj1
y obj2
eran tanto MyClass
(o cualquiera que sea su clase se llama). JUnit's assertEquals
solo llamará al equals(Object)
ya que no conoce nada mejor.
Funciona cuando cambio public boolean equals (MyClass other) a public boolean equals (Object other). Gracias Jon. –
@nikel: El hecho de que 'date' es mutable hace que sea difícil de poner en práctica la igualdad muy bien - que podría tener un' 'HashSet
volver a agregar el comentario - me pregunto por qué la fecha no anula su implementación iguales ... – nikel
Este es el código para assertEquals
(de Github):
static public void assertEquals(String message, Object expected,
Object actual) {
if (expected == null && actual == null)
return;
if (expected != null && isEquals(expected, actual))
return;
else if (expected instanceof String && actual instanceof String) {
String cleanMessage= message == null ? "" : message;
throw new ComparisonFailure(cleanMessage, (String) expected,
(String) actual);
} else
failNotEquals(message, expected, actual);
}
private static boolean isEquals(Object expected, Object actual) {
return expected.equals(actual);
}
No puedo pensar en un solo caso en el que este se comporta de la manera que usted describe - si su método equals
no está manejando comparaciones a null
valores correctamente.
Estás suponiendo que el 'equals' llamado por JUnit es el mismo' equals' llamada en la versión que pasa ... –
@ Jon Sí, acabo de notar que había adivinado correctamente el problema. –
- 1. Java JUnit assertEquals con larga
- 2. diferencia Junit entre assertEquals (Doble, Doble) y assertEquals (doble, doble, delta)
- 3. prueba de junit - assertEquals para excepción
- 4. Java: ¿Es confiable assertEquals (String, String)?
- 5. ¿Debería el mensaje JUnit indicar la condición de éxito o falla?
- 6. assertEquals java establece
- 7. assertEquals vs. assertEqual en python
- 8. jUnit probando dos matrices booleanas
- 9. Ordenando matriz de objetos por dos criterios?
- 10. ¿Por qué openssl_pkey_new() falla?
- 11. JUnit prueba una falla en la base de datos?
- 12. assertEquals no funciona sin el segundo parámetro de conversión
- 13. Detener suite de JUnit si determinada prueba falla
- 14. ¿Por qué JUnit ejecuta casos de prueba para teoría solo hasta la primera falla?
- 15. Significado del argumento epsilon de assertEquals para valores dobles
- 16. afirmaciones JUnit: hacer la afirmación entre flotantes
- 17. Comparando dos objetos.
- 18. jQuery combinar dos objetos
- 19. Junit para probar la concurrencia
- 20. ¿Por qué GetGenericTypeDefinition falla?
- 21. junit assert en thread throws excepción
- 22. JUnit - assertSame
- 23. Burlarse de los objetos en las pruebas JUnit: ¿práctica recomendada?
- 24. JUnit + Maven + Eclipse: ¿Por qué @BeforeClass no funciona?
- 25. ¿Hay un AssertEquals para probar archivos XML?
- 26. Autowire no funciona en la prueba junit
- 27. Comparación de dos objetos NSManagedObjects
- 28. fusionando dos objetos en C#
- 29. agregando dos objetos ActiveRecord :: Relation
- 30. Comparación de dos objetos NSNumber
que necesitamos para ver el código para el método equals – hvgotcodes
son '' obj1' y obj2' del mismo tipo? –
¿Intentó en el modo de depuración que la igualdad anulada sea utilizada por assertEquals? – VirtualTroll