Wpis z mikrobloga

#programowanie #dotnet #csharp

Obecnie do testów integracyjnych używam xUnit. Ale zaczynam się zastanawiać czy nie ma jakiegoś runnera który jest lepiej przystosowany do pewnych rzeczy. Potrzebuję zorganizować testy w drzewo. Nie mają być wykonywane losowo, tylko w ustalonej kolejności aby sprawdzać pewne ścieżki scenariuszy. Używam WebApplicationFactory bo testy są robione jak najbliżej żywego organizmu jak się da w ten sposób.

Obecnie udało mi się je uszeregować tak aby było dobrze, ale potrzebuję zrobić coś takiego, że mamy drzewo testów gdzie np. krok 1 logujemy się jako admin a potem w kolejnych krokach walimy po kolei różne rzeczy np. createUser, jak to zadziałało to editUser, jak zadziałało to getUser, jak zadziałało to logujemy się na niego i sprawdzamy inne rzeczy po kolei a admin może lecieć dalej osobno sprawdzać swoje.

Generalnie testować różne rzeczy mogę za pomocą [InlineData], ale tutaj scenariusz jest taki, że admin tworzy usera, potem przeskakujemy na tego usera i testujemy dla niego, a na końcu wracamy do admina i go usuwamy. Playlista testów też mi tego nie umożliwi raczej. Jest coś takiego pod .NET Core co mogłoby te funkcje odpalać z konkretnymi argumentami w konkretnej kolejności?
  • 4
@Khaine: Jeśli bazujesz w testach na jednej instancji aplikacji (a w xUnicie akurat to nie będzie defaultowe zachowanie, bo on tworzy instancję klasy testowej per test, nie per zestaw testów), to zrób sobie własny orderer do testów, xUnit wystawia do tego API. Google Twoim przyjacielem, szukasz hasła TestCaseOrderer.
TestCaseOrderer


@Czesiowcy: To już zrobiłem, mam własny orderer. Ale w sumie masz rację jak tak sobie myślę, wystarczy odpowiednie kolekcje porobić i będzie śmigać. Równoległe odpalanie mam wyłączone (bo bez tego w ogóle nic się nie da zrobić po kolei, wszystko się zesra), więc polecą sobie po kolei po priorytetach tak jak teraz i elo.