【发布时间】:2012-10-23 06:19:48
【问题描述】:
JUnit、TestNG 和 Spring 测试具有测试执行侦听器作为扩展机制。测试执行侦听器似乎是框架开发人员和工具开发人员感兴趣的低级功能。
测试执行侦听器有用的主要用例有哪些?它们对应用程序开发人员有用吗?
【问题讨论】:
标签: java spring testing junit testng
JUnit、TestNG 和 Spring 测试具有测试执行侦听器作为扩展机制。测试执行侦听器似乎是框架开发人员和工具开发人员感兴趣的低级功能。
测试执行侦听器有用的主要用例有哪些?它们对应用程序开发人员有用吗?
【问题讨论】:
标签: java spring testing junit testng
在 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
生成测试报告, 生成可靠的报告, 为仪表板导出数据
【讨论】:
对于 JUnit,侦听器被设计为一种报告方法,并在内部像这样使用。因此,您可以显示执行的测试计数、成功、失败、错误等。这也用于外部,例如maven-surefire。以JUnit4RunListener.java 为例。
另一个用途是以不同的格式输出,例如 XML。我认为其他框架的主要用例是相同的。
在 JUnit 中,监听器类的使用方式并不像 Dharshana 在 testng 中使用他的测试监听器那样,即作为设置/拆卸。 Listeners 中使用的对象(Description、Failure、Result)是不可变的,不鼓励直接访问测试类本身。我不确定 TestNG,Cedric 会是一个更好的人问。
它们对应用程序开发人员有用吗?它们很可能是,这取决于您的测试是如何设置的。它们只会在测试的上下文中使用,所以如果他们可以改进它们,那么继续使用它们。一个用例是JUnit test report enrichment with JavaDoc,参见my answer。回顾一下答案,如果开发人员为特定错误添加测试,那么他们可以向该测试添加注释,将其链接回错误。有一个自定义的 RunListener,它将注释中的所有信息收集在一起,并为最终客户生成报告。
【讨论】: