Gradle中的JUnit侦听器配置

时间:2019-01-30 22:24:44

标签: gradle junit maven-surefire-plugin

我是Gradle的新蜜蜂。有自定义的JUnit侦听器,它可以读取自定义的注释数据并生成报告,并且需要将其配置为Gradle的一部分。无论如何,在Gradle 4.4中是否可以在surefire插件下方进行配置。

<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>

我知道,可能无法像在gradle中那样使用maven插件。我检查了TestListener,它不支持阅读注释以继续进行操作。

我想了解在Gradle中配置JUnit侦听器的方法。

2 个答案:

答案 0 :(得分:0)

恐怕,Gradle目前不支持JUnit RunListeners。只有打开的票证要求该功能:https://github.com/gradle/gradle/issues/1330

当某人在票证上有mentioned in the comments时,“主要问题[…]是TestDescriptor.getAnnotations()的缺失”;否则,您可能已能够将您的RunListener重写为Gradle TestListener。因此,除非我在浏览门票时错过了一些东西,否则看来您现在似乎很不走运:-(

答案 1 :(得分:0)

通过JUnit Foundation库,您可以在服务提供商的配置文件中声明侦听器,然后自动附加该侦听器,而与执行环境无关。可以在here中找到详细信息。

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测试运行程序等各种测试执行环境之间的行为差​​异。