【问题标题】:What are typical uses cases for Test Execution Listeners in Testing Frameworks such as JUnit and TestNG?测试框架(如 JUnit 和 TestNG)中测试执行侦听器的典型用例是什么?
【发布时间】:2012-10-23 06:19:48
【问题描述】:

JUnit、TestNG 和 Spring 测试具有测试执行侦听器作为扩展机制。测试执行侦听器似乎是框架开发人员和工具开发人员感兴趣的低级功能。

测试执行侦听器有用的主要用例有哪些?它们对应用程序开发人员有用吗?

【问题讨论】:

    标签: java spring testing junit testng


    【解决方案1】:

    在 testng 的情况下,listners 对我来说是最了不起的事情。 testNg 列表器允许我简化测试方法的内容,并通过服务器启动、用户注册、填充测试所需的工件来管理每个测试。并为每个测试周期清理环境。

    在每个侦听器级别,我都在执行以下操作,因此我不必在测试中为它们烦恼

    IExecutionListener

       - onExecutionStart()
             Emma instrumentations
             Server start 
      - onExecutionFinish()
             Server Sutdown
             Emma report generation
    
    • ISuiteListener 设置环境属性 ex- Key Store Paths

         Populate Users.
      
    • ITestListener

      • 开始时

         Artifact Deployment
        
      • 完成

          Artifact Clean up
        
    • IReporter

    • 生成测试报告, 生成可靠的报告, 为仪表板导出数据

    【讨论】:

    • 您在测试期间启动的服务器是什么。您是对服务器进行网络 IO 还是在与测试相同的过程中启动服务器?
    • 我们确实基于服务器执行测试。无论如何,您都可以启动任何支持服务器,例如启动 tomcat 并为任何类型的集成测试套件部署 webapp。
    【解决方案2】:

    对于 JUnit,侦听器被设计为一种报告方法,并在内部像这样使用。因此,您可以显示执行的测试计数、成功、失败、错误等。这也用于外部,例如maven-surefire。以JUnit4RunListener.java 为例。

    另一个用途是以不同的格式输出,例如 XML。我认为其他框架的主要用例是相同的。

    在 JUnit 中,监听器类的使用方式并不像 Dharshana 在 testng 中使用他的测试监听器那样,即作为设置/拆卸。 Listeners 中使用的对象(DescriptionFailureResult)是不可变的,不鼓励直接访问测试类本身。我不确定 TestNG,Cedric 会是一个更好的人问。

    它们对应用程序开发人员有用吗?它们很可能是,这取决于您的测试是如何设置的。它们只会在测试的上下文中使用,所以如果他们可以改进它们,那么继续使用它们。一个用例是JUnit test report enrichment with JavaDoc,参见my answer。回顾一下答案,如果开发人员为特定错误添加测试,那么他们可以向该测试添加注释,将其链接回错误。有一个自定义的 RunListener,它将注释中的所有信息收集在一起,并为最终客户生成报告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 2013-07-22
      相关资源
      最近更新 更多