2012-03-28 13 views
5

que quiero escribir algo como:Uso CollectionAssert.Contains contra una colección

var list = new List<int>(){1,2,3}; 
var bigList = new List<int>(){1,2,3,4,5,6,7,8,9}; 

CollectionAssert.Contains(bigList, list); 

yo puede conseguir a un error similar al siguiente:

Expected: collection containing < 1,2,3 > 
But was: < 1,2,3,4,5,6,7,8,9 > 

¿Es posible utilizar el método contains contra otra colección ?

Respuesta

4

La firma es

CollectionAssert.Contains (ICollection collection, Object element) 

Y comprueba si element (singular) se encuentra dentro collection.
No es un método para buscar sub-listas.

Probablemente debería utilizar:

CollectionAssert.IsSubsetOf (ICollection subset, ICollection superset) 
+0

Christ ¡Necesito algunas gafas! – Jon

2

De MSDN

Uso CollectionAssert.IsSubsetOf:

var list = new List<int>(){1,2,3}; 
var bigList = new List<int>(){1,2,3,4,5,6,7,8,9}; 

CollectionAssert.IsSubsetOf(list, bigList); 
1

La misma funcionalidad, sintaxis diferente (estilo limitación de NUnit, más cercano al lenguaje natural, que es una calidad de una buena prueba):

var list = new List<int>(){1,2,3}; 
var bigList = new List<int>(){1,2,3,4,5,6,7,8,9}; 

Assert.That(list, Is.SubsetOf(bigList)); 
0

El propósito del uso de CollectionAssert.IsSubsetOf(list, bigList) es que con mayor frecuencia desee ver cuál de los elementos de la lista no está incluido en la lista grande. La prueba de que todos los artículos de list están contenidos en bigList solo devuelve verdadero o falso, lo que no me proporciona ninguna información de depuración útil de lo que está mal. Quiero que la prueba falle y también proporcione la información de cuál de los ítems no estaba en bigList.

Así que para mí, siempre me convierto la declaración CollectionAssert.IsSubsetOf(list, bigList) a

var list = new List<int>(){0,1,2,3,9}; // note the 0 and 9 is added to the list 
var bigList = new List<int>(){1,2,3,4,5,6,7,8}; 

CollectionAssert.IsEmpty(list.Except(bigList)); 

que da el resultado

Expected <empty> 
But was: <0, 9> 

En otras palabras, list contiene 0 y 9, que no están contenidos en bigList

Cuestiones relacionadas