是否可以在单元测试结束时执行某些高级操作?
喜欢抓取所有测试结果和日志并通过电子邮件发送给开发人员吗?
希望在JUnit或Gradle中使用解决方案。
答案 0 :(得分:1)
纯JUnit
方法可能是实现您自己的RunListener
,以便能够获取每个测试的信息。
要调用您的侦听器,您需要通过JUnitCore
运行测试。
public void main(String... args) {
JUnitCore core= new JUnitCore();
core.addListener(new MyRunListener());
core.run(MyTestClass.class);
}
纯Gradle
方法可能是实现您自己的TestListener
,以便能够获取每个测试的信息并发送最终报告。
在build.gradle
中,您需要添加gradle.addListener(new my.package.MyTestListener())
。您的侦听器必须位于构建源目录中,也称为buildSrc
。
答案 1 :(得分:1)
test.finalizedBy(someHighLevelOperationTask)
示例:以下是一项可以调用gradle emailTestResults
的任务,该任务取决于依赖于'zipTestResults'
的{{1}}。我还没有完成它的电子邮件部分,其中包含一个问题:Sending email using Gradle
所以这只是用test
代替电子邮件任务:
println
但如果测试失败,那将无法工作,所以,可能有更好的方法,但你可以添加:
apply plugin: 'java'
task zipTestResults(dependsOn: 'test', type: Zip){
from 'build/reports/tests'
baseName 'TestReport'
destinationDir file('build/reports')
}
task emailTestResults(dependsOn: 'zipTestResults') << {
println 'Emailing...' + file('build/reports/TestReport.zip')
}
repositories{
jcenter()
}
dependencies{
testCompile 'junit:junit:4.12'
}
然后,如果您随后总是想通过电子邮件发送测试结果,请添加:
test.ignoreFailures = true
然后通过电子邮件结果test.finalizedBy(emailTestResults)
完成。