2013-09-05 5 views
9

Niedawno zacząłem używać NUnit do testowania integracji dla mojego projektu. To wspaniałe narzędzie, ale znalazłem jedną wadę, na którą nie mogę znaleźć odpowiedzi. Wszystkie moje testy integracji używają atrybutu TestCaseSource i określają nazwę źródła przypadku testowego dla każdego testu. Problem polega na tym, że przygotowanie tych źródeł przypadków testowych zajmuje sporo czasu (~ 1 min.) I jeśli wykonuję jeden test, NUnit zawsze ładuje KAŻDY POJEDYNCZE źródło testowania, nawet jeśli nie jest to źródło testowania dla testu że biegnę.NUnit - Ładuje WSZYSTKIE Źródła TestCase, nawet jeśli nie są wymagane przez bieżący test

Czy to zachowanie można zmienić, aby tylko źródło (a) testowe źródła dla testu, w którym działam, było ładowane? Chcę uniknąć tworzenia nowych zespołów za każdym razem, gdy chcę utworzyć nowy test (wydaje się raczej zbędny i kłopotliwy, nie wspominając już o tym, że trudno go utrzymać), ponieważ przeczytałem, że testy w różnych zestawach są ładowane osobno, ale ja nie ". t wiedzieć o źródłach przypadków testowych. Warto wspomnieć, że używam Resharpera jako biegacza testowego.

TL; DR: Należy nakazać NUnit załadowanie tylko obiektów TestCaseSources, które są potrzebne do testów uruchomionych w bieżącej sesji. Obecne zachowanie polega na tym, że WSZYSTKIE TestCaseSources są ładowane dla każdego uruchomionego testu.

+0

Czy możesz podać kod, który demonstruje bieżące zachowanie? –

+0

Oczywiście, wkrótce edytuję oryginalne pytanie i dodaję kod, którego używam. – Anshul

+0

To demonstruje zachowanie dla mnie - uruchamianie ReSharpera 6 na VS2013. Przepraszamy za formatowanie - nie chciałem opublikować go jako odpowiedzi nieudzielonej. Nawet jeśli nie używam 'TestWhichIAmNotRunning', ReSharper oceni' InfiniteValues', które zwróci '1' na zawsze. - - - - - 'public static IEnumerable InfiniteValues ​​{get {while (DateTime.Now! = DateTime.MinValue) return return 1; }} [Test, TestCaseSource ("InfiniteValues")] public void TestWhichIAmNotRunning (wartość int) {} ' –

Odpowiedz

1

Czy możesz to zrobić, przenosząc swoje instancję źródłowe do metody pomocniczej i wywołując je w metodach konfiguracji dla każdego zestawu testów? Często mam zestaw metod pomocniczych w moim zestawie testów integracji, które konfigurują wspólne dane dla różnych testów. Wywołuje tylko pomocnicze metody, które są mi potrzebne w bieżącym zestawie w [Setup]

+0

Można to zrobić, ale w jaki sposób użyłbyś atrybutu TestCaseSource do przypisania źródeł przypadków testowych do metod? Chciałem użyć atrybutu TestCaseSource, ponieważ zajmuje się on tablicą parametrów do translacji tablic parametrów i sprawia, że ​​testowanie jest bardziej modułowe. – Anshul

+0

Wydaje się to dobrym pomysłem, ale nie zadziała z atrybutem źródła TestCase. Próbowałem również przenieść to do konstruktora klasy testowej, ale wygląda na to, że TestCaseSource jest oceniany bardzo wcześnie. To jest prawdziwy problem dla testów integracyjnych, które używają TestCaseSources, które mapują z bazy danych. –

Powiązane problemy