NUnit ma funkcję o nazwie Wartości, jak poniżej:
[Test]
public void MyTest(
[Values(1,2,3)] int x,
[Values("A","B")] string s)
{
// ...
}
Oznacza to, że metoda testowa będzie działać sześć razy:
MyTest(1, "A")
MyTest(1, "B")
MyTest(2, "A")
MyTest(2, "B")
MyTest(3, "A")
MyTest(3, "B")
Używamy teraz MSTest, ale czy istnieje odpowiednik tego, abym mógł uruchomić ten sam test z wieloma parametrami?
[TestMethod]
public void Mytest()
{
// ...
}
Odpowiedzi:
Niestety nie jest obsługiwany w starszych wersjach MSTest. Najwyraźniej istnieje model rozszerzalności i można go zaimplementować samodzielnie . Inną opcją byłoby użycie testów opartych na danych .
Moja osobista opinia byłaby jednak taka, aby trzymać się NUnit ...
Począwszy od programu Visual Studio 2012, aktualizacja 1, MSTest ma podobną funkcję. Zobacz odpowiedź McAdena .
źródło
EDYCJA 4 : Wygląda na to, że zostało to ukończone w MSTest V2 17 czerwca 2016 r .: https://blogs.msdn.microsoft.com/visualstudioalm/2016/06/17/taking-the-mstest-framework-forward-with-mstest- v2 /
Oryginalna odpowiedź :
Mniej więcej tydzień temu w Visual Studio 2012 Update 1 jest teraz możliwe coś podobnego:
EDYCJA : Wygląda na to, że jest to dostępne tylko w ramach projektu testów jednostkowych dla WinRT / Metro . Porażka
EDYCJA 2 : Poniżej przedstawiono metadane znalezione za pomocą polecenia „Przejdź do definicji” w programie Visual Studio:
EDYCJA 3 : ten problem został poruszony na forach UserVoice programu Visual Studio. Ostatnia aktualizacja stwierdza:
https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/3865310-allow-use-of-datatestmethod-datarow-in-all-unit
źródło
Ta funkcja jest teraz w wersji wstępnej i działa z programem Visual Studio 2015.
Na przykład:
źródło
Nie dokładnie to samo, co atrybuty NUnit
Value
(lubTestCase
), ale MSTest maDataSource
atrybut, który pozwala zrobić podobną rzecz.Możesz go podłączyć do bazy danych lub pliku XML - nie jest to tak proste jak funkcja NUnit, ale spełnia swoje zadanie.
źródło
MSTest ma potężny atrybut o nazwie DataSource . Korzystając z tego, możesz wykonywać testy oparte na danych, zgodnie z zapytaniem. Możesz mieć swoje dane testowe w formacie XML, CSV lub w bazie danych. Oto kilka linków, które Cię poprowadzą
źródło
Jest bardzo prosty w implementacji - powinieneś użyć
TestContext
property iTestPropertyAttribute
.Przykład
EDYTOWAĆ:
Przygotowałem kilka metod rozszerzających, aby uprościć dostęp do
TestContext
właściwości i działać tak, jakbyśmy mieli kilka przypadków testowych. Zobacz przykład przetwarzania prostych właściwości testowych tutaj:i przykład tworzenia złożonych obiektów testowych:
Zapoznaj się z metodami rozszerzającymi i zestawem próbek, aby uzyskać więcej informacji.
źródło
Istnieje oczywiście inny sposób, który nie został omówiony w tym wątku, a mianowicie dziedziczenie klasy zawierającej TestMethod. W poniższym przykładzie zdefiniowano tylko jedną metodę TestMethod, ale utworzono dwa przypadki testowe.
W programie Visual Studio 2012 tworzy dwa testy w narzędziu TestExplorer:
DemoTest_A12_B4.test
źródło
MSTest nie obsługuje tej funkcji, ale możesz zaimplementować własny atrybut, aby to osiągnąć.
Zapoznaj się z włączaniem testów parametrycznych w MSTest przy użyciu PostSharp .
źródło
Nie mogłem zmusić The
DataRowAttribute
do pracy w Visual Studio 2015 i oto, co otrzymałem :Prawdziwym rozwiązaniem jest tutaj użycie NUnit (chyba że utkniesz w MSTest, tak jak ja w tym konkretnym przypadku).
źródło