Как запустить набор тестов с помощью gradle из командной строки

Я пытаюсь использовать gradle для запуска тестов со следующей командой, но она не работает

gradle cleanTest test --tests my.package.TestSuite

мой набор тестов выглядит следующим образом

@RunWith(Suite.class)
@Suite.SuiteClasses({
    ATests.class,
    BTests.class,
    CTests.class
})
public class MySuite {
  /* placeholder, use this to contain all integration tests in one spot * */
}

попытка выполнить следующую команду работает, но, к сожалению, она выполняет каждый тест дважды. один раз сам по себе, а затем снова под набором тестов в том же пространстве имен

gradle clean test --tests my.package.*

я мог бы просто бросить набор тестов и сделать это таким образом, но я хочу лучше понять, что здесь происходит и почему я не могу сказать, чтобы он напрямую запускал набор тестов.

1 ответов


следующее работает для меня локально.

gradle -Dtest.single=MySuite clean test

это фактически использует другой подход (включение теста) по сравнению с более продвинутым подходом фильтрации, используемым --test.

как описано в ссылочной ссылке, пример выше работает путем создания шаблона включения файла формы **/MySuite*.class, тогда как --test пытается выбрать тесты из отсканированного набора тестов. Я подозреваю, что между общей фильтрацией тестов, реализованной в Gradle и конкретные случаи вокруг JUnit Suite runner.

сказав это, даже документы Gradle предупреждают, что вышеупомянутый подход заменен, и на самом деле я, вероятно, повторил бы комментарий @Opal и определил явную задачу для запуска наборов для данного этапа тестирования. Например, следующий запуск с gradle clean testSuite может запустить пакет интеграции.

task testSuite(type: Test) {
   include 'MySuite.class'  
}

ссылки: