【发布时间】:2017-02-22 20:18:18
【问题描述】:
是否可以在单元测试结束时执行一些高级操作?
比如获取所有测试结果和日志并通过电子邮件发送给开发人员?
希望使用 JUnit 或 Gradle 解决方案。
【问题讨论】:
标签: java unit-testing gradle automation automated-tests
是否可以在单元测试结束时执行一些高级操作?
比如获取所有测试结果和日志并通过电子邮件发送给开发人员?
希望使用 JUnit 或 Gradle 解决方案。
【问题讨论】:
标签: java unit-testing gradle automation automated-tests
纯粹的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。
【讨论】:
test.finalizedBy(someHighLevelOperationTask)
示例:这是一个您可以调用 gradle emailTestResults 的任务,它依赖于 'zipTestResults',而 'zipTestResults' 又依赖于 test。我还没有完成它的电子邮件部分,有一个问题涵盖了:Sending email using Gradle
所以这只是用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)
然后gradle test 将通过电子邮件发送结果来完成。
【讨论】: