Wyklucz poszczególne metody testowe JUnit bez modyfikowania klasy Test?

Obecnie używam ponownie testów JUnit 4 z innego projektu w stosunku do mojego kodu. Otrzymuję je bezpośrednio z repozytorium innego projektu w ramach mojej automatycznej kompilacji Ant. To wspaniałe, ponieważ zapewnia, że ​​kod pozostanie zielony w porównaniu z najnowszą wersją testów.

Istnieje jednak podzbiór testów, których nigdy nie spodziewałem się przekazać mojemu kodowi. Ale jeśli zacznę dodawać adnotacje @Ignore do tych testów, będę musiał utrzymywać własną oddzielną kopię implementacji testu, którą janaprawdę nie chcę tego robić.

Czy istnieje sposób wykluczenia poszczególnych testów bez modyfikowania źródła Test? Oto, na co dotychczas patrzyłem:

O ile widzę, zadanie Ant JUnit pozwala tylko na wykluczenie całych klas Testów, a nie pojedynczych metod testowania - więc to nie jest dla mnie dobre, potrzebuję ziarnistości metody.

Zastanawiałem się nad połączeniem TestSuite, który używa refleksji, aby dynamicznie znaleźć i dodać wszystkie oryginalne testy, a następnie dodać kod, aby jawnie usunąć testy, których nie chcę uruchamiać. Ale porzuciłem ten pomysł, gdy zauważyłem, żeTestSuite API nie zapewnia metody usuwania testów.

Mogę tworzyć własne klasy Testów, które rozszerzają oryginalne klasy Test, zastępują konkretne testy, których nie chcę uruchamiać, i opisuję je za pomocą @Ignore. Następnie uruchamiam JUnit na moich podklasach. Minusem jest to, że jeśli nowe klasy Testów zostaną dodane do oryginalnego projektu, nie będę ich automatycznie odbierać. Będę musiał monitorować nowe klasy testów, ponieważ są one dodawane do oryginalnego projektu. To jak dotąd moja najlepsza opcja, ale nie jest idealna.

Jedyną inną opcją, o której myślę, jest uruchomienie złych testów i zignorowanie błędów. Jednak testy te trwają trochę czasu (i nie działają!), Więc wolę ich nie uruchamiać. Ponadto nie widzę sposobu, aby nakazać Antowi zignorować awarie określonych metod testowych (ponownie - widzę, jak możesz to zrobić dla poszczególnych klas Testów, ale nie metod).

questionAnswers(6)

yourAnswerToTheQuestion