Jak ułatwić TDD z MSTest / VS2008

Czytałem raz po raz, że TDD / test first jest trudniejsze z MSTest niż z innymi frameworkami testowymi, takimi jak nUnit, MBUnit, itp... Jakie są sugerowane ręczne obejścia i / lub bity innych firm, które sugerujesz, gdy MSTest jest jedyną opcją ze względu na politykę infrastrukturalną? Zastanawiam się głównie nad VS 2008 Team Suite, ale przypuszczam, że wskazówki dotyczące VS 2008 Pro na up też byłyby odpowiednie, ponieważ niektóre funkcje MSTest są teraz dołączone do tych wersji, jak również.

Author: Daniel Auger, 2008-08-27

10 answers

MSTest z pewnością nie jest tak wydajny ani rozszerzalny jak niektóre frameworki open source, ale jest wykonalny. Ponieważ pytanie pyta o ułatwianie życia z MSTest, a nie o alternatywy, oto moje wskazówki MSTest.

  • skróty. Jak powiedział Haacked, poświęć kilka sekund, aby nauczyć się skrótów.
  • Aktualny Kontekst . Ponieważ MSTest jest tak powolny, uruchamiaj testy tylko w bieżącym kontekście, gdy możesz. (CTRL+R , CTRL+T). Jeśli kursor znajduje się w metodzie testowej, spowoduje to uruchomienie tylko tej metody. Jeśli kursor znajduje się poza metodą, ale w klasie testowej, spowoduje to tylko uruchomienie testu. I z przestrzenią nazw, itd itd
  • skuteczne testy i organizacja. To psie powolne. Zrób wszystko jak najlepiej, pisząc skuteczne testy. Przenieś powolne testy do innych klas testowych lub projektów, aby można było uruchamiać szybkie testy częściej.
  • Testowanie z WCF . Jeśli testujesz usługi, pamiętaj, aby debugować testy, a nie uruchamiać testy, aby Visual Studio mogło odpalić ASP.NET tworzenie serwerów WWW. Po ich zakończeniu możesz wrócić do uruchomienia, ale łatwiej jest zawsze debugować, więc nie musisz o tym myśleć.
  • Pliki Konfiguracyjne . Edytuj konfigurację test-Uruchom, aby przenieść.pliki konfiguracyjne do folderu wykonania testu.
  • integracja z Source Safe . Trzeba mieć świadomość, że MSTest nienawidzi SourceSafe i uczucie jest wzajemne. Ponieważ MSTest chce umieścić pliki testowe pod kontrolą źródła i dodać je do rozwiązania, musi sprawdzać rozwiązanie za każdym razem, gdy uruchamiasz testy. SourceSafe musi działać w trybie multi-check-out, aby uniknąć zabijania innych programistów.
  • Ignoruj puch z MSTest, dostajesz kilkanaście różnych okien i widoków. Testy, Widok Testowy, Listy Testowe ... wszyscy są mniej niż pomocni. Trzymaj się wyników testów, a będziesz o wiele szczęśliwszy.
  • trzymaj się "testów jednostkowych" . Po dodaniu nowego testu można dodać zamówiony test, test jednostkowy lub uruchomić kreator. Trzymaj się prostych testów jednostkowych.
 29
Author: Brad Tutterow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-24 06:29:35

Jeśli nie masz innego wyboru niż używać MSTest, naucz się skrótów klawiaturowych. Ułatwią Ci życie.

Test w bieżącym kontekście: CTRL+R, T
Wszystkie testy w rozwiązaniu: CTRL+R, A

Testy debugowania w bieżącym kontekście: CTRL+R, CTRL+T
Debuguj wszystkie testy w rozwiązaniu: CTRL+R, CTRL+A

 13
Author: Haacked,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-21 10:21:06

Jestem ciekawa. Nie rozumiem tego, że ludzie zaczynają porównywać wszystkie dostępne narzędzia Open Source z MSTest i zaczynają je bić. Komentowanie jak nieporęczne to jest, jak nieporęczne itp. IMHO, to dlatego, że zasadniczo różni się od frameworków xUnit. Jest zoptymalizowany do równoległego wykonywania.

Nawet Korik posiadania statycznej klasy i czyszczenia oraz posiadania unikalnego Testkontekstu dla każdego z testów wszystko z powodu nextgen - przynajmniej dla Windows business Programiści w językach MS - koncepcje programowania równoległego.

Miałem nieszczęście pracować w projekcie z dziesiątkami tysięcy testów jednostkowych. Zajmowały one praktycznie większość czasu budowy! Dzięki MSTest ograniczymy to do bardzo łatwych do zarządzania terminów.

 6
Author: Vyas Bharghava,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-17 08:51:18

Mój kolega Mike Hadlow ma całkiem dobre podsumowanie, dlaczego całkowicie nienawidzimy MSTest tutaj .

Udało mu się usunąć go ze swojego projektu, ale obecnie pracuję nad większym projektem z większą ilością polityki, więc nadal go używamy.

Rezultatem tego jest to, że ktokolwiek zaimplementował MSTest, nie rozumie TDD. Przepraszam, że brzmię jak M$ basher-naprawdę nie jestem. Ale jestem zirytowany, że muszę znosić bardzo słabe narzędzie.

 3
Author: Iain Holder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 15:33:56

Nie widziałem żadnych poważnych problemów z MSTest. O czym konkretnie mówisz? W rzeczywistości oddalamy się od NUnit do MSTest. Nie znam jednak naszych powodów.

 2
Author: Sander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-27 05:05:41

Istnieje wiele plików konfiguracyjnych z mstest, co czyni go mniej condutive.
Innym powodem, dla którego wybrałem mbunit, jest funkcja "rollback" w mbunit. Pozwala to na cofnięcie wszystkich danych wykonanych w tym teście, dzięki czemu można faktycznie wykonać pełne testy obwodów i nie martwić się o skażenie stawu po teście.
Również brak obiektów RowTest w mstest.

Sugeruję po prostu uruchomienie mbunit jako zależności wewnątrz procesu budowania, jest wystarczająco łatwe, aby po prostu przenieść go z bin, i odniesienia, nie wymaga instalacji.

 2
Author: DevelopingChris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-27 05:08:26
  • MSTest ma "wysokie tarcie": uzyskanie skrypt budowania z NAant i MbUnit w porównaniu do MStest i MSBuild. Nie. Porównanie.
  • MSTest to wolny MbUnit a NUnit są w moim experince szybciej (gallio może tu pomóc)
  • MStest dodaje a kilka rzeczy, których nie potrzebuję jak przewodowe pliki konfiguracyjne itp.
  • MSTest nie posiada zestawu fetaure innych frameworków testowych systemu operacyjnego. sprawdź xUnit i MbUnit

To po prostu zbyt trudne w użyciu i istnieje wiele lepszych opcji.

 2
Author: RhysC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-30 10:26:37

Jak wspomniano oyu musi zainstalować pełne IDE, aby używać MSTest na innej maszynie, co jest nieco bzdurne. Przypuszczam, że to dlatego, że chcą się upewnić, że testy jednostkowe działają tylko na wyższych studiach wizualnych i można je uruchomić w inny sposób.

Ponadto, MSTest jest dość powolny, dzieje się tak dlatego, że pomiędzy każdym testem odbudowuje cały kontekst dla każdego testu, co sprawia, że o0ne jest pewien, że poprzedni test-nie powiódł się lub w inny sposób nie wpłynie na bieżący test, ale spowalnia sprawy. możesz jednak użyć flagi /noisolation, która uruchomi wszystkie testy w ramach procesu MSTest - co jest szybsze. Aby przyspieszyć w IDE: W VS ide możesz przejść do Narzędzia-Opcje, a następnie wybrać Narzędzia testowe. Wybierz element podrzędny o nazwie test execution i w dialouge po prawej stronie upewnij się, że pole wyboru o nazwie "Keep test execution engine running between test runs" jest zaznaczone.

 2
Author: Fredrik Bonde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-28 12:33:30

Aby odpowiedzieć na pytanie niecelowe, moja odpowiedź brzmiałaby "prawdopodobnie NUnit po prostu trzyma się z dala od twojej twarzy."

Disclaimer: nie mam prawdziwego doświadczenia z wersją MS xUnit, jednak słyszę problemy w stylu "musisz zainstalować gigantyczny pomysł, aby uruchomić testy na oddzielnej maszynie" - co jest kompletnym Nie-Nie. Poza tym MS ma ten sposób wykreślania właściwej ścieżki dla nowicjusza za pomocą jakiegoś IDE dzwonka/gwizdka, który jest sprzeczny z całym pomysłem. Jak generowanie sprawdziany z klas były takie, które pamiętam z jakiegoś roku temu.. to pokonuje cały punkt Test-driving - twój projekt ma wyłaniać się z małych kroków RGR: napisanie testu-make it pass-refactor. Jeśli używasz tego narzędzia-to okrada cię z całego doświadczenia.

Skończę z moim kazaniem.. teraz:)

 1
Author: Gishu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-27 06:13:35

Zajmuję się rozwojem TDD przy użyciu NUnit od wielu lat i używam MSTest od około 4 miesięcy teraz ze względu na zmianę roli.

Myślę, że MSTest nie powstrzymuje kogoś przed zrobieniem TDD. Nadal masz wszystkie podstawowe rzeczy potrzebne do TDD, takie jak podstawowe twierdzenia i frameworki wyśmiewające (używam Rhino Mocks).

MSTest integruje się ściśle z Visual Studio, najlepszym komponentem tej integracji jest wbudowane narzędzie do pokrycia kodu.

Ale Istnieją liczba przekonujących powodów nie do korzystania z MSTest. Dwa największe wyłączniki moim zdaniem to:

  1. brak opcji assert (w porównaniu do NUnit)
  2. powolny biegacz testowy (powolny w porównaniu do NUnit)

Oznacza to, że pisanie twierdzeń wymaga więcej kodu w połączeniu z wolnym biegaczem testowym oznacza, że cały proces jest wolniejszy niż NUnit. Opcje open source mają również znacznie większe wsparcie w społeczności.

Jeśli używasz TFS do CI, następnie będziesz musiał przeskoczyć przez kilka obręczy/hacków, aby NUnit opublikował wyniki testu. Uruchamianie testów na TFS z MSTest w porównaniu jest bardzo proste i proste. Jeśli nie dotkniesz TFS, to pójdę na NUnit, to jest po prostu ładniejsze.

 1
Author: Andrew Conn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-22 06:34:20