确定哪些测试用例覆盖了某个方法

2023-12-10

我当前正在进行的项目要求我编写一个工具,在 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(使用前将#替换为@)

确定哪些测试用例覆盖了某个方法 的相关文章

随机推荐

  • Bootstrap Sass 与 Rails 4

    我正在尝试在我的rails 4 0 0 项目中使用bootstrap sass 3 1 0 2 和sass rails 4 0 1 我的 application css scss 文件如下所示 This is a manifest file
  • 管理多个开发人员的 sys.path

    我面临的问题虽小但很烦人 一位同事正在开发版本控制系统 X VCS X 中的一个项目 另一位同事正在另一个版本控制系统 Y 中工作 并使用来自 X 的软件包 不幸的是 VCS X 中的同事使用本地导入并使用修改他的路径sys path ap
  • 当列数小于列数时,Chrome 列会出现错误

    我在使用 Chrome 时遇到问题column count财产 我有一个 div 里面有一些项目 所以我设置column count 3 当我有 3 个或更多项目时 它效果很好 但是当我只有两个项目时 它们不会显示在同一行中 而是显示在同一
  • 在solvet()中使用erf()函数时,sympy和mpmath给出“TypeError:无法创建mpf”

    我有 4 个输入变量 浮点数 Xmax Xmin 百分比 mode 我想求解 s 的以下 相当长的 方程 gt 1 2 1 2 erf log Xmax log mode s 2 sqrt 2 s 1 2 1 2 erf log Xmin
  • Hashlib 和 System.Security.Cryptography.HashAlgorithm 之间的区别

    我试图了解哈希算法的工作原理 特别是 SHA3 512 为了看看它是如何工作的 我在谷歌中搜索了代码并发现了Hashlib 该代码不起作用 因为我没有 Hashlib 库 不确定它应该被称为什么 我怎样才能得到它 这是在 C 中应用 SHA
  • Facebook SDK 3.1 - com.facebook.sdk 使用 [facebook Authorize:permissions] 进行身份验证时出现错误 5

    使用以下授权方法进行身份验证时 我在 startWithGraphPath 和 startForMeWithCompletionHandler 中收到 com facebook sdk 错误 5 但在 requestWithGraphPat
  • Java 中的按位与 (&) 表达式

    我正在调试其中的代码expr1 expr2 where expr1有一个影响的副作用expr2评价结果 我怀疑expr2之前被评估过expr1 因为 JLS 保证从左到右评估 但不一定是为了 我还怀疑评估顺序的更改可能是 HotSpot 执
  • 获取cookie过期时间

    是否可以使用 php 读取 cookie 过期时间 当我print r COOKIE 它输出 Array PHPSESSID gt 0afef6bac83a7db8abd9f87b76838d7f userId gt 1232 userEm
  • Extjs 创建网格功能或网格插件,为网格中的每一列设置工具提示

    这个问题有添加工具提示的答案 Extjs4 在 gridPanel 中每列悬停时设置工具提示 我对这个问题最受好评的答案有一个后续问题 即修改渲染器函数以添加工具提示 如下所示 xtype gridcolumn dataIndex stat
  • 什么是窗口加载替代方案?

    我有以下情况 我想show我的图片at once仅当页面完全加载时 因为我想避免在 内一张一张地显示图像文档准备功能 它们最初是隐藏的 并希望向它们显示at once仅当文档加载完成时 所以我使用 window load function
  • 将 csrf 令牌从 Laravel 传递到 Vue

    Pass csrf令牌来自Laravel 到 Vue我有一个单独的 Vue 应用程序用于客户端 Laravel 应用程序用于后端 API 我使用 Cookie 因此需要 csrf 保护 如何将 csrf 令牌从服务器传递到客户端 每 XX
  • 为什么 Dataflow-BigTable 连接器不支持增量?

    我们在流模式下有一个用例 我们想要跟踪管道中 BigTable 上的计数器 items 已完成处理的东西 为此我们需要增量操作 从看https cloud google com bigtable docs dataflow hbase 我发
  • OnTriggerEnter2D 未被调用

    我正在尝试在 Unity 中制作小行星的复制品 问题是我的子弹没有触发OnTriggerEnter2D小行星上的方法 小行星附有以下脚本 using UnityEngine using System Collections public c
  • 有没有办法为 Windows 窗体中的特定按钮挂钩鼠标事件

    我想从特定窗口内的特定按钮挂钩 WM MOUSEDOWN 和 WM MOUSEUP 事件 我想 SetWindowsHookEx 会挂钩我想要的消息 FindWindowEx 将帮助我找到我想要捕获这些事件的窗口句柄 我只是不知道如何让它从
  • 如何在用户窗体上使用带有选项按钮控件的事件[重复]

    这个问题在这里已经有答案了 我正在尝试从 Excel 工作表中的范围添加选项按钮 For Each Value In OptionList Set opt UserForm3 Controls Add Forms OptionButton
  • AngularJs 中控制器之间的通信

    我有一个简单的问题 当两个控制器之间 比方说 进行交互时 最好的 最干净的 可扩展的 路径是什么 那会是定义一个服务并观察该服务的返回值以便做出反应吗 我设置了一个简单的例子here 我在其中查看服务的当前值 scope watch fun
  • Membership.GetUser().ProviderUserKey 始终返回 null

    我最近开始使用 ASP NET 表单身份验证和成员身份 我在 Visual Studio 中创建了一个 C 项目 它会自动创建 Account Login aspx 之类的页面 然后我按照一个安装示例aspnet 表到我的 SQL Serv
  • 在构造函数中读取ControllerBase.User

    我想要一个基本控制器 它应该为每个控制器操作设置身份验证变量 claimsIdentity User Identity as ClaimsIdentity userId claimsIdentity FindFirst ID Value 不
  • 字典中的哈希码

    我正在玩字典并偶然发现了以下场景 public class MyObject public string I get set public string J get set public string K get set public ov
  • 确定哪些测试用例覆盖了某个方法

    我当前正在进行的项目要求我编写一个工具 在 Web 应用程序上运行功能测试 并输出方法覆盖率数据 记录哪个测试用例遍历了哪个方法 Details 接受测试的 Web 应用程序将是在 servlet 容器 例如 Tomcat 中运行的 Jav