En una prueba jUnit, quiero obtener algunas filas de la base de datos basadas en la columna name
. Luego quiero probar que las filas que tengo tienen los nombres que esperaba. Tengo el siguiente:jUnit y Guava, comparando la igualdad de listas después de la transformación()
Set<MyClass> typesToGet = MyClassFactory.createInstances("furniture",
"audio equipment");
Collection<String> namesToGet = Collections2.transform(typesToGet,
new NameFunction<MyClass, String>());
List<MyClass> typesGotten = _svc.getAllByName(typesToGet);
assertThat(typesGotten.size(), is(typesToGet.size()));
Collection<String> namesGotten = Collections2.transform(typesGotten,
new NameFunction<ItemType, String>());
assertEquals(namesToGet, namesGotten); // fails here
Actualmente me sale este error:
java.lang.AssertionError: expected: com.google.common.collect.Collections2$TransformedCollection<[audio equipment, furniture]> but was: com.google.common.collect.Collections2$TransformedCollection<[audio equipment, furniture]>
¿Cuál es la manera más limpia, más concisa para probar que llegué filas atrás de la base de datos cuyo name
columna coincide con los nombres I dijo que yo quería? Podría tener un ciclo for
iterando y comprobando que cada nombre en una lista existe en la otra, pero esperaba ser más conciso. Algo así como lo siguiente pseudocódigo sería bueno:
List<MyClass> typesGotten = ...;
["furniture", "audio equipment"].equals(typesGotten.map(type => type.getName()))
Creo que he encontrado 'containsInAnyOrder' describe en http://www.jarvana.com/jarvana/view/org/hamcrest/hamcrest-library/1.2.1/hamcrest-library-1.2.1-javadoc .jar! /org/hamcrest/Matchers.html pero no veo documentación al respecto. ¿Sabe si confirma que las dos colecciones tienen el mismo tamaño, que la colección 1 no tiene nada más que los elementos que se encuentran en la colección 2, y que la colección 2 no tiene más que elementos encontrados en la colección 1? –
La documentación de Hamcrest es un poco escasa en esta área, por lo que vale la pena intentar algunos emparejamientos para convencerse de que están haciendo lo correcto. Alternativamente, el código fuente está en http://code.google.com/p/hamcrest/source/browse/trunk/hamcrest-java/hamcrest-library/src/main/java/org/hamcrest/collection/IsIterableContainingInAnyOrder.java ? r = 480. Sí, comprueba que la colección 1 tiene todos los elementos de la colección 2, y viceversa, y por lo tanto, que tienen el mismo tamaño. – Kkkev