Настройка прослушивателя JUnit в Gradle - PullRequest
0 голосов
/ 31 января 2019

Я новая пчела в Градле.Имейте пользовательский JUnit Listener, который читает пользовательские данные аннотации и генерирует отчет и должен настраивать его как часть Gradle.В любом случае есть ли настроить ниже плагин безошибочный в Gradle 4.4.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
        <properties>
            <property>
                <name>listener</name>
                <value>my.company.MyRunListener</value>
            </property>
        </properties>
    </configuration>
</plugin>

Я понимаю, что может быть невозможно использовать плагин Maven, как в Gradle.Я проверил TestListener , он не поддерживает чтение аннотаций для продолжения.

Я хотел бы понять, как настроить мой JUnit Listener в Gradle.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Библиотека JUnit Foundation позволяет объявлять прослушиватели в файле конфигурации поставщика услуг, которые затем присоединяются автоматически - независимо от среды выполнения.Подробности можно найти здесь .

Конфигурация Gradle для JUnit Foundation

// build.gradle
...
apply plugin: 'maven'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
    mavenLocal()
    mavenCentral()
    ...
}
dependencies {
    ...
    compile 'com.nordstrom.tools:junit-foundation:9.1.1'
}
ext {
    junitFoundation = configurations.compile.resolvedConfiguration.resolvedArtifacts.find { it.name == 'junit-foundation' }
}
test.doFirst {
    jvmArgs "-javaagent:${junitFoundation.file}"
}
test {
//  debug true
    // not required, but definitely useful
    testLogging.showStandardStreams = true
}

ServiceLoader файл конфигурации провайдера

# src/main/resources/META-INF/services/org.junit.runner.notification.RunListener
com.example.MyRunListener

При такой конфигурации прослушиватель, реализованный с помощью MyRunListener, будет автоматически присоединен к RunNotifier, предоставленному методу run() бегунов JUnit.Эта функция устраняет поведенческие различия между различными средами выполнения тестов, такими как Maven, Gradle и встроенные тестовые среды IDE.

0 голосов
/ 31 января 2019

Боюсь, в настоящее время нет поддержки JUnit RunListener s в Gradle.Существует только открытый билет, запрашивающий эту функцию: https://github.com/gradle/gradle/issues/1330

Поскольку у кого-то есть , упомянутый в комментариях к этому билету, «основной проблемой […] является отсутствие TestDescriptor.getAnnotations()В Gradle;в противном случае вы могли бы переписать свой RunListener как Gradle TestListener.Поэтому, если я что-то пропустил, просматривая билет, кажется, что вам сейчас в основном не повезло: - (

...