我当前正在进行的项目要求我编写一个工具,在 Web 应用程序上运行功能测试,并输出方法覆盖率数据,记录哪个测试用例遍历了哪个方法。
Details:接受测试的 Web 应用程序将是在 servlet 容器(例如 Tomcat)中运行的 Java EE 应用程序。功能测试将使用 JUnit 在 Selenium 中编写。某些方法将被注释,以便在部署到测试环境之前对其进行检测。一旦执行 Selenium 测试,带注释的方法的执行将被记录。
Problem:这个项目的最大障碍是找到一种方法将测试用例的执行与方法的遍历联系起来,特别是测试和应用程序运行在不同的 JVM 上,并且无法传输测试用例的名称关闭应用程序,并且无法使用线程信息将测试与代码执行相关联。
建议的解决方案:我的解决方案包括使用执行时间:我扩展 JUnit 框架来记录测试用例的执行时间,并对应用程序进行检测,以便节省遍历方法的时间。我尝试使用相关性将测试用例与方法覆盖率联系起来。
预期问题:该解决方案假设测试用例按顺序执行,并且一个测试用例在下一个测试用例开始之前结束。这个假设对于 JUnit 合理吗?
问题:简而言之,我能否了解您对提议的解决方案的意见,以及如何改进它并使其在大多数 Java EE 应用程序上更加健壮和实用的建议?或者导致已经实施的解决方案?
谢谢
Edit:要添加更多要求,该工具应该能够在任何 Java EE 应用程序上运行,并且需要在应用程序中进行最少的配置或更改。虽然我知道这不是一个现实的要求,但该工具至少应该不需要对应用程序本身进行任何巨大的修改,例如添加类或代码行。
您是否查看过现有的覆盖工具(Cobertura、Clover、Emma...)。我不确定其中之一是否能够将覆盖率数据链接到测试用例,但至少使用开源的 Cobertura,您可以执行以下操作:
- 使用 cobertura 为课程提供工具
- 部署已检测的 Web 应用程序
- start a test suite
- 每次测试后,调用 Web 应用程序上的 URL,该 URL 将覆盖率数据保存到以刚刚运行的测试命名的某个文件中,并重置覆盖率数据
- 测试套件完成后,为每个保存的文件生成一份 cobertura 报告。每个报告都会告诉测试运行了哪些代码
如果您需要合并报告,我想使用 cobertura API 从一组保存的文件生成它应该不会太难。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)