2016-11-30 5 views
3

Я использую следующую аннотацию, чтобы пометить мои тесты интеграции:JUnit5 тег конкретных Gradle задача

@Target({ ElementType.TYPE, ElementType.METHOD }) 
@Retention(RetentionPolicy.RUNTIME) 
@Tag("integration-test") 
public @interface IntegrationTest { 
} 

Это фильтр я использую в build.gradle, чтобы исключить эти тесты из gradle build:

junitPlatform { 
    filters { 
     tags { 
      exclude 'integration-test' 
     } 
    } 
} 

Так далеко, так хорошо.

Теперь я хотел бы предложить задачу Gradle, которая специально запускает мои интеграционные тесты - какой рекомендуемый подход?

+0

Это очень хороший вопрос, и я боюсь, что на данный момент нет решения _clean_ для достижения этого из-за того, как мы реализовали плагин JUnit Platform Gradle. Не могли бы вы пожелать создать проблему, чтобы сохранить это на нашем радаре? https://github.com/junit-team/junit5/issues/new –

+0

Спасибо, что обратились к нам! https://github.com/junit-team/junit5/issues/579 – netzwerg

ответ

3

Я подал вопрос: https://github.com/junit-team/junit5/issues/579 (как предложено Sam Brannen).

Между тем, я использую свойство проекта в качестве обходного пути:

junitPlatform { 
    filters { 
     tags { 
      exclude project.hasProperty('runIntegrationTests') ? '' : 'integration-test' 
     } 
    } 
} 

Следовательно, интеграции тестов будут пропускаются с:

gradle test

но будут включены с :

gradle test -PrunIntegrationTests

+1

Удивительный! Я собирался предложить обходное решение, подобное этому. Поэтому я рад, что вы поняли это сами. Также спасибо за поднятие проблемы GitHub. –