Как запустить все тесты JUnit в категории / комплекте с Ant?

Я использую категории JUnit и ClassPathSuite в настройках, аналогичных описанным в этом ответе . Напомним:

public interface FastTests { } @RunWith(Categories.class) @Categories.IncludeCategory(FastTests.class) @Suite.SuiteClasses(AllTests.class) public class FastTestSuite { } @RunWith(ClasspathSuite.class) public class AllTests { } 

… где AllTests использует библиотеку ClasspathSuite .

Класс тестирования, который является частью категории FastTests, будет выглядеть следующим образом:

 @Category(FastTests.class) public class StringUtilsTest { // ... } 

Когда я запускаю «FastTestSuite» в моей среде IDE, все тесты с аннотацией FastTests выполняются, nice & smooth:

введите описание изображения здесь

Теперь я хочу сделать то же самое с Ant . (К моему удивлению, я не мог легко найти инструкции для этого на SO.) Другими словами, мне нужна цель Ant, которая запускает все тесты с помощью annotations FastTests.

Я пробовал несколько упрощенных подходов, используя или

       

… но пока не повезло.

Edit : Помимо IDE, он отлично работает с JUnitCore в командной строке:

 $ java -classpath "classes:WebContent/WEB-INF/lib/*" org.junit.runner.JUnitCore fi.foobar.FastTestSuite ............. Time: 0.189 OK (13 tests) 

Правильно, я просто работал с :

          

я пробовал , но сделал глупую ошибку в использовании "**/FastTestSuite.java" вместо "**/FastTestSuite.class" в элементе … Извините за это 🙂

NB : необходимо установить fork="yes" (т. Е. Запустить тесты в отдельной виртуальной машине); в противном случае это также даст «initializationError» в java.lang.reflect.Constructor.newInstance (Constructor.java:513), например (см. комментарии к вопросу). Однако я не мог заставить работать даже с fork="yes" .

Единственным недостатком является то, что в результате создается только один файл отчета JUnit XML (TEST-fi.foobar.FastTestSuite.xml), который делает его похожим на то, что все (сотни) тестов находятся в одном classе (FastTestSuite). Если кто-то знает, как настроить это, чтобы показать тесты в своих оригинальных classах и пакетах, пожалуйста, дайте мне знать.

Я нашел обходное решение для использования задачи junit от ant для запуска теста определенной Category :

              

Выполните тест, предоставив свойство category.name муравью вроде этого:

 ant -Dcategory.name=FastTests test 

Использование batchtest также будет производить отдельные файлы отчета JUnit XML для каждого теста (например, TEST-fi.foobar.FastTestClassN.xml).

  • Начал ли JUnit4 поддерживать заказ теста? Это намеренно?
  • Как проверить, что исключение не выбрасывается?
  • @RunWith (MockitoJUnitRunner.class) против MockitoAnnotations.initMocks (это)
  • Java: Является ли assertEquals (String, String) надежным?
  • Разница между @Before, @BeforeClass, @BeforeEach и @BeforeAll
  • Maven не находит тесты JUnit для запуска
  • Получение «NoSuchMethodError: org.hamcrest.Matcher.describeMismatch» при запуске теста в IntelliJ 10.5
  • setUp / tearDown (@ Before / @ After), почему мы нуждаемся в них в JUnit?
  • Давайте будем гением компьютера.