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.
Czy możesz podać kod, który demonstruje bieżące zachowanie? –
Oczywiście, wkrótce edytuję oryginalne pytanie i dodaję kod, którego używam. – Anshul
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) {} ' –