我是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侦听器的方法。
答案 0 :(得分:0)
恐怕,Gradle目前不支持JUnit RunListener
s。只有打开的票证要求该功能:https://github.com/gradle/gradle/issues/1330
当某人在票证上有mentioned in the comments时,“主要问题[…]是TestDescriptor.getAnnotations()
的缺失”;否则,您可能已能够将您的RunListener
重写为Gradle TestListener
。因此,除非我在浏览门票时错过了一些东西,否则看来您现在似乎很不走运:-(
答案 1 :(得分:0)
通过JUnit Foundation库,您可以在服务提供商的配置文件中声明侦听器,然后自动附加该侦听器,而与执行环境无关。可以在here中找到详细信息。
// 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测试运行程序等各种测试执行环境之间的行为差异。