2009-03-19 12 views
12

Il framework MSTest ha un CollectionAssert che accetta ICollections. Il mio metodo restituisce un IList. Apparentemente una lista non è una collezione ..IList test di unità con CollectionAssert

Ci sono modi per rendere il mio IList un ICollection?

+2

Il problema di connessione per questo. Solita risposta Microsoft, tsss. https://connect.microsoft.com/VisualStudio/feedback/details/477870/collectionassert-cannot-be-used-with-hashset-t-and-possibly-other-collections# – Rudi

risposta

9

Si potrebbe chiamare il metodo di estensione ToArray() su di esso - Array implementa ICollection

Edit: Inoltre, mentre List<T> implementa ICollection, IList<T> implementa solo ICollection<T> che non implementa ICollection, quindi se si conosce la voce del test è un List<T>, si dovrebbe essere in grado di lanciarlo ...

+0

Penso che IEnumerable per i parametri sarebbe stato una scelta migliore NUnit ha questo diritto. – Gishu

1

è possibile inviare in un elenco

List<string> actual = new List<string>(){"1","2","3"}; 
    List<string> expected = new List<string>(){"1","2","**EditCaseFalse**"}; 
    CollectionAssert.AreEqual(actual,expected) 

torno Respinti (terzo elemento non lo fa match.)

+3

e in che modo esattamente questo è correlato alla domanda? –

+0

Invio due liste (IList) confrontate in CollectionAssert è il tuo problema ... – salgo60

+0

Mi dispiace, non ho letto abbastanza sulla tua risposta. Si prega di fare riferimento alla risposta di Lee sul perché questo funziona, ma non su una soluzione al mio problema. –