2012-06-29 8 views
11

Używamy cechy Spec w naszych testach w ScalaTest. kiedy uruchamiamy cały pakiet, nie zawsze działa on w tej samej kolejności. Większość odpowiedzi w google sugeruje określenie pakietu i określenie wszystkich nazw testowych. Wymaga to jednak dodania nazwy testu za każdym razem, gdy dodamy nowy test.Jak sprawić, aby testy zawsze działały w tej samej kolejności w Scalatest?

Czy można użyć samego DiscoverySuite i zdefiniować kolejność wykonywania testu? Wykonaj testy w kolejności alfabetycznej. Spojrzałem na rozszerzenie DiscoverySuite, ale DiscoverySuite wydaje się być prywatne do skalowania.

--- Więcej informacji ----

Zamawiając To znaczy, jeśli istnieją testy A, B, C.

 
class A extends Spec {..} 
class B extends Spec {..} 
class C extends Spec {..} 

następnie chcę, aby uruchomić testy w celu (A, B, C). Ale teraz dzieje się tak, że za każdym razem działa w innej kolejności.

+5

FWIW, testy powinny być zdefiniowane w taki sposób, aby kolejność wykonywania nie miała znaczenia. To sprawia, że ​​poszczególne testy są bardziej odporne (zmiana testu A nie spowoduje przerwania testu B), łatwiejsze do zrozumienia (aby zrozumieć test A, wystarczy spojrzeć na test A) i niezależne (mogę przeprowadzić tylko te testy, których potrzebuję). – leedm777

+0

Rozumiem i całkowicie zgadzam się, że testy powinny być zdefiniowane w taki sposób, aby zamówienie nie miało znaczenia. Ale niestety są to testy funkcjonalne (Webdriver) i jest ich wiele. Tak więc, jako pierwszy krok do ich naprawienia, chciałem, aby były uruchamiane w tej samej kolejności iw międzyczasie analizują, co to jest problem. –

Odpowiedz

10

DiscoverySuite jest prywatnym obiektem ScalaTest, tak. Kolejność wykonywania testów w Spec (teraz tak zwana FunSpec) jest zdefiniowana jako kolejność pojawiania się w pliku źródłowym. Aby zdefiniować kolejność klas testowych, należy zdefiniować metodę nestedSuites i uruchomić ten pakiet Suite zamiast używać Discovery. Możesz wrócić do korzystania z odnajdywania, gdy nie będziesz już potrzebować zamówienia. Przyjrzę się dodaniu zdefiniowanej kolejności do DiscoverySuite w następnym wydaniu ScalaTest.

+0

Jak wyjaśniłem powyżej, chcę, aby testy przebiegły w kolejności alfabetycznej, tak aby w przypadku niepowodzenia testu mogę odtworzyć je ponownie. W tej chwili mamy wiele powodów, dla których test może się nie powieść. Po prostu chcesz usunąć kolejność testowania z równania i przeanalizować inne awarie. Gdy inne powody są mniejsze, usuniemy zamówienie. –

+0

Podobnie do tego, stwierdzam, że model dziedziczenia testów może być korzystny. W tej chwili mam błąd testu B, ale przed jego uruchomieniem test C (który używa B) jest testowany, oczywiście nie. Czy mogę zadeklarować, że C powinien być uruchamiany tylko wtedy, gdy przechodzi B? – akauppi

+0

Może być przydatny: http://doc.scalatest.org/2.0/index.html#org.scalatest.Suite –

Powiązane problemy