【问题标题】:Perform some high-level operation of Unit test finish?执行单元测试完成的一些高级操作?
【发布时间】:2017-02-22 20:18:18
【问题描述】:

是否可以在单元测试结束时执行一些高级操作?

比如获取所有测试结果和日志并通过电子邮件发送给开发人员?

希望使用 JUnit 或 Gradle 解决方案。

【问题讨论】:

    标签: java unit-testing gradle automation automated-tests


    【解决方案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

    【讨论】:

      【解决方案2】:
      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 将通过电子邮件发送结果来完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-20
        • 2012-04-13
        • 2022-07-06
        • 2019-08-15
        • 2012-08-31
        • 1970-01-01
        • 2013-05-01
        • 1970-01-01
        相关资源
        最近更新 更多