2011-10-18 11 views
12

Obecnie piszę projekt C# i muszę wykonać test jednostkowy dla projektu. Dla jednej z metod, które potrzebuję do testu jednostkowego, korzystam z ICollection, który jest zwykle wypełniany z wybranych elementów pola listy.Dodaj do ICollection

Podczas tworzenia testów jednostkowych dla metody tworzy linię

ICollection icollection = null; //Initialise to an appropriate value 

Jak mogę utworzyć instancję tej kolekcji ICollection i element do kolekcji?

Odpowiedz

25

ICollection jest interfejsem, nie można oznacz ją bezpośrednio. Będziesz musiał utworzyć instancję klasy, która implementuje ICollection; na przykład List<T>. Ponadto, ICollection interface nie ma metody Add - potrzebujesz czegoś, co implementuje do tego IList lub IList<T>.

Przykład:

List<object> icollection = new List<object>(); 
icollection.Add("your item here"); 
+0

Ale lista nie implementuje ICollection. Boardy poprosił o ICollection. –

+0

@ Hungary1234 'List ' implementuje 'IList', który jest potomkiem' ICollection'. Zatem 'List ' jest także 'ICollection'. – Donut

+2

Sposób, w jaki @Donut napisał komentarz sprawia, że ​​czuję, że QED jest wymagane na końcu. – DFTR

0

Powiedzmy masz zbiór ciągów, wtedy kod będzie:

ICollection<string> test = new Collection<string>(); 
test.Add("New Value"); 
0

Co można zrobić, to utworzyć typ, który implementuje kolekcji ICollection, a stamtąd z niego skorzystać w testowaniu. Lista lub kolekcja działałaby przy tworzeniu instancji obiektu. Sądzę, że inne pytanie będzie, jaki typ są elementy w polu listy. Dodawanie elementów do listy lub kolekcji jest dość trywialne po prostu za pomocą metody .Add (...).

List<T> list = new List<T>(); 
list.Add(item_from_your_list_box); 
list.Add(item2_from_your_list_box); 

Czy jest coś bardziej konkretnego, co należy zrobić z tą kolekcją?

3
List<Object> list = new List<Object>(); 
list.Add(object1); 
list.Add(object2); 
// etc... 

ICollection collection = list; 
// further processing of collection here. 

przeciwieństwie do niektórych uwag, IList<T> ma realizować ICollection, przynajmniej o ile mogę powiedzieć.