Uważam, że TestCase
funkcja w NUnit jest całkiem przydatna jako szybki sposób określenia parametrów testu bez konieczności stosowania oddzielnej metody dla każdego testu. Czy jest coś podobnego w MSTest?
[TestFixture]
public class StringFormatUtilsTest
{
[TestCase("tttt", "")]
[TestCase("", "")]
[TestCase("t3a4b5", "345")]
[TestCase("3&5*", "35")]
[TestCase("123", "123")]
public void StripNonNumeric(string before, string expected)
{
string actual = FormatUtils.StripNonNumeric(before);
Assert.AreEqual(expected, actual);
}
}
DataRow()
, zobacz: blogs.msdn.microsoft.com/devops/2016/06/17/…Odpowiedzi:
Firma Microsoft niedawno ogłosiła „MSTest V2” (zobacz artykuł na blogu ). Dzięki temu możesz konsekwentnie (komputer stacjonarny, UWP, ...) używać opcji
DataRow
-attribute!Niestety, Eksplorator testów programu Visual Studio Express nie rozpoznaje tych testów. Ale przynajmniej „pełne” wersje VS obsługują teraz tę funkcję!
Aby go użyć, po prostu zainstaluj pakiety NuGet MSTest.TestFramework i MSTest.TestAdapter (oba w wersji wstępnej od teraz).
Starsza odpowiedź:
Jeśli nie musisz trzymać się MSTest i używasz go po prostu do uruchamiania testów za pomocą Eksploratora testów
ponieważ masz tylko wersję Visual Studio Express, to może być rozwiązanie dla Ciebie:Istnieje rozszerzenie VsTestAdapter VSIX umożliwiające uruchamianie testów NUnit za pośrednictwem Eksploratora testów. Niestety, użytkownicy VS Express nie mogą instalować rozszerzeń ... Ale na szczęście VsTestAdapter jest również dostarczany z prostym pakietem NuGet !
Tak więc, jeśli jesteś użytkownikiem VS Express, po prostu zainstaluj VsTestAdapter NuGet-Package i ciesz się uruchamianiem testów / przypadków testowych NUnit za pośrednictwem Eksploratora testów!Niestety powyższe stwierdzenie nie jest prawdziwe. Chociaż jest całkowicie możliwe zainstalowanie pakietu za pośrednictwem edycji Express, jest to bezużyteczne, ponieważ nie może korzystać z Eksploratora testów. Wcześniej była uwaga dodatkowa na temat starszej wersji TestAdapter, która została usunięta ze strony opisu wersji 2.0.0 :
źródło
Wiem, że to późna odpowiedź, ale mam nadzieję, że pomoże to innym.
Wszędzie szukałem eleganckiego rozwiązania i sam je napisałem. Używamy go w ponad 20 projektach z tysiącami testów jednostkowych i setkami tysięcy iteracji. Ani razu nie przegapiłam.
https://github.com/Thwaitesy/MSTestHacks
1) Zainstaluj pakiet NuGet .
2) Dziedzicz klasę testową z TestBase
3) Utwórz właściwość, pole lub metodę, która zwraca wartość IEnumerable
4) Dodaj atrybut MSTest DataSource do metody testowej, wskazując na powyższą nazwę IEnumerable. To musi być w pełni kwalifikowane.
Wynik końcowy: 3 iteracje, tak jak normalne źródło danych :)
źródło
Wiem, że to kolejna późna odpowiedź, ale w moim zespole, który jest zablokowany przy użyciu frameworka MS Test, opracowaliśmy technikę, która opiera się tylko na typach anonimowych do przechowywania tablicy danych testowych i LINQ do zapętlania i testowania każdego wiersza. Nie wymaga żadnych dodatkowych klas ani ram i wydaje się być dość łatwe do odczytania i zrozumienia. Jest również znacznie łatwiejszy do wdrożenia niż testy oparte na danych z wykorzystaniem plików zewnętrznych lub połączonej bazy danych.
Załóżmy na przykład, że masz taką metodę rozszerzenia:
Możesz użyć i tablicy typów anonimowych połączonych z LINQ, aby napisać takie testy:
Korzystając z tej techniki, warto użyć sformatowanego komunikatu, który zawiera dane wejściowe w Assert, aby pomóc Ci zidentyfikować wiersz powodujący niepowodzenie testu.
Opisałem to rozwiązanie na blogu AgileCoder.net, podając więcej informacji i szczegółów .
źródło
Khlr podał dobre szczegółowe wyjaśnienia i najwyraźniej to podejście zaczęło działać w VS2015 Express for Desktop. Próbowałem zostawić komentarz, ale mój brak reputacji nie pozwolił mi na to.
Skopiuję rozwiązanie tutaj:
Aby z niego skorzystać, wystarczy zainstalować pakiety NuGet MSTest.TestFramework i MSTest.TestAdapter .
Jest jeden problem
Dlatego usuń Microsoft.VisualStudio.QualityTools.UnitTestFramework z odniesień do projektu.
Serdecznie zapraszamy do edycji oryginalnej odpowiedzi i usunięcia tej.
źródło
MSTest ma atrybut DataSource, który pozwoli ci przesłać do niego tabelę bazy danych, csv, xml itp. Użyłem go i działa dobrze. Nie znam sposobu na umieszczenie danych powyżej jako atrybutów, jak w pytaniu, ale bardzo łatwo jest skonfigurować zewnętrzne źródła danych i pliki, które można uwzględnić w projekcie. Uruchomiłem go godzinę od kiedy zacząłem i nie jestem ekspertem od testów automatycznych.
https://msdn.microsoft.com/en-us/library/ms182527.aspx?f=255&MSPPError=-2147217396 zawiera pełny samouczek oparty na danych wejściowych z bazy danych.
http://www.rhyous.com/2015/05/11/row-tests-or-paramerterized-tests-mstest-xml/ zawiera samouczek oparty na danych wejściowych w pliku XML.
źródło