确定哪些测试覆盖一行代码

2024-01-26

有没有办法确定可能执行给定代码行的单元测试集?换句话说,你能否自动确定不只是whether给定的行已被覆盖,但覆盖它的实际测试集是什么?

考虑一个包含 50K 单元测试的大型代码库。显然,运行所有这些可能需要很长时间——即使不是几天,也可能是几个小时。在这样的代码库中工作,您希望能够执行一些subset所有单元测试,仅包括那些覆盖您刚刚触及的行(或多行)的单元测试。当然,您可以手动找到一些并运行它们,但我正在寻找一种更快、更全面的方法。

如果我的想法正确的话,这应该是可能的。工具可以静态地遍历每个单元测试引出的所有代码路径,并得出可从该测试访问的程序片段。然后,您应该(理论上)能够计算在其切片中包含给定行的单元测试集,这意味着该行可以由该测试执行(“可以”而不是“将”,因为实际的代码路径将仅在运行时根据输入或其他条件确定)。给定的代码行可能有大量执行它的测试(例如,共享库中的代码),而其他行可能很少(或没有)测试覆盖它们。

So:

  1. 我的推理对这个想法合理吗?理论上可以做到吗?或者我遗漏了什么?

  2. 是否已经有一个工具可以做到这一点?或者,这是一个我没有遇到过的名字的常见现象吗?指向 Java 世界中的工具或有关该主题的一般研究的指针将不胜感激。


JetBrains 的dotCover http://www.jetbrains.com/dotcover现在 .NET 代码也具有此功能。可以通过 dotCover 菜单中的“显示覆盖测试”选项或按 Ctrl + Alt + K 来访问它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定哪些测试覆盖一行代码 的相关文章

  • 如何对私有方法进行单元测试?

    我正在构建一个类库 它将有一些公共和私有方法 我希望能够对私有方法进行单元测试 主要是在开发时 但它也可能对未来的重构有用 这样做的正确方法是什么 如果您想对私有方法进行单元测试 则可能会出现问题 单元测试 一般来说 旨在测试类的接口 即其
  • 测试后 NUnit 回滚

    我对 NUnit 以及一般的自动化测试 还很陌生 我最近做了一些 Ruby On Rails 工作 并注意到在我的测试套件中 当我创建对象 例如新用户 并在套件过程中提交它们时 它们永远不会提交到数据库 以便我可以运行一遍又一遍地测试 不用
  • Jasmin + karma:“错误:模块‘DynamicTestModule’导入了意外的值‘HttpClient’。请添加 @NgModule 注释。”

    我使用 jasmine 作为测试框架 使用 karma 作为测试运行程序 我正在尝试创建一个 HttpClient 对象 以便我可以创建一个服务作为该对象的依赖项 TestBed configureTestingModule declara
  • Junit 5使用mockConstruction().withSetting().useConstructor()而不是PowerMock.whenNew().withArguments()

    现在我想使用 Junit 5 Mockito 4 x 版本 Mockito inline 4 x 版本而不是 Junit 4 PowerMock 2 0 9 因为Junit 5不支持PowerMock Mockito inline也可以模拟
  • Jasmine:期望在异步函数中抛出错误

    我的 angular2 应用程序中有一个异步函数 我想为其编写单元测试 想象一下我的功能是这样的 myFunc a int Promise
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • 从类 T 获取函数名 (__func__) 和指向成员函数的指针 void(T::*pmf)()

    是否可以写一些f 接受类型的模板函数T和一个指向签名成员函数的指针void T pmf 作为 模板和 或函数 参数并返回const char 指向成员函数的 func 变量 或损坏的函数名称 EDIT 我被要求解释我的用例 我正在尝试编写一
  • OCUnit 无法识别导入的文件

    我正在我的 iPhone 应用程序上使用 XCode 3 2 3 和 iOS 4 0 上的 OCUnit 进行单元测试 我已成功设置测试环境以适当地通过和失败基本测试 但是当我导入自己的文件 在本例中为 UserAccount h 时 它无
  • 单元测试魔术方法

    当涉及到 PHP 中魔术方法的单元测试实现时 调用这些方法的推荐方法是什么 我看到三个可用选项 显式 直接调用它们 object gt get someValue 间接调用它们 使用任何旨在触发它们的操作 object gt someVal
  • Django 单元测试数据库没有被拆除?

    我编写了一些单元测试来测试我的 Django 应用程序 特别是一个测试套件中包含大量代码setUp 功能 所述代码的目的是为数据库创建测试数据 是的 我了解固定装置 并且选择在这种情况下不使用它们 当我运行单元测试套件时 运行的第一个测试通
  • 如何模拟 typeORM 的 getCustomRepository

    我想对一个在其构造函数中使用 getCustomRepository 的类进行单元测试 但我只是想不出一种简单的方法来模拟它 这是我的班级代码 import getCustomRepository from typeorm export c
  • 正确的单元测试技术

    在使用 TDD 时 我发现自己需要测试一个包含查找值的常量 最终 哈希图 请查看更新中出现这种情况的原因 见下文 private static final Map
  • 我应该更改单元测试的命名约定吗?

    我目前对单元测试使用一个简单的约定 如果我有一个名为 EmployeeReader 的类 我将创建一个名为 EmployeeReader Tests 的测试类 然后 我在测试类中为该类创建所有测试 名称如下 Reading Valid Em
  • 如何将 ZF2 单元/应用程序模块测试合并到单个调用中?

    我遵循将测试存储在模块中的 ZF2 约定 并且当从每个模块内运行测试时一切正常 我想做的是有一个根级别的 phpunit xml 来调用各个模块测试并将它们合并以生成代码覆盖率数据和其他指标 问题是每个单独的测试套件都是在模块化 phpun
  • 计算 TCP 重传次数

    我想知道在LINUX中是否有一种方法可以计算一个流中发生的TCP重传的次数 无论是在客户端还是服务器端 好像netstat s解决了我的目的
  • 在 Composite WPF (Prism) 中,我应该如何对我的控制器进行单元测试?

    我正在使用一个模块构建一个基本的复合 WPF Shell 我想对我的模块进行单元测试 显然 Composite WPF 以一种易于单元测试的方式模块化我的代码 下面是我想要进行单元测试的代码 它驻留在我的模块的控制器中 请注意标准复合 WP
  • 这可以用 Moq 来嘲笑吗?

    我正在努力模拟一些外部依赖项 并且在一个第三方类中遇到了麻烦 该类在其构造函数中接收另一个第三方类的实例 希望 SO 社区能给我一些指导 我想创建一个模拟实例SomeRelatedLibraryClass它的构造函数接受一个模拟实例Some
  • 如何在要测试的 React 组件内模拟自定义钩子?

    如果您有一个调用获取数据的自定义挂钩的 React 组件 那么在测试 React 组件时模拟内部自定义挂钩结果的最佳方法是什么 我看到两种主要方法 1 Jest mock 自定义钩子 这似乎是最推荐的方法 但它似乎要求测试对内部实现细节以及
  • 如何在 ASP.NET Core 项目中使用 MStest 测试 Ok() 结果

    我正在使用 MStest 来测试我的控制器 我想测试这个动作 HttpGet Name GetGroups public async Task
  • 如何仅在特定错误退出值(0 除外)上将 Jenkins 构建标记为成功?

    当我运行Execute shell构建步骤来执行脚本并且该脚本返回0 Jenkins将构建标记为SUCCESS 否则它将其标记为FAILURE这是预期的默认行为0表示没有错误 任何其他值表示有错误 有没有办法将构建标记为SUCCESS仅当返

随机推荐

  • 更新 Android SDK 工具 REV 22 后出现错误“无法解析 L 的超类”

    昨天项目还好 但是今天更新Sdk工具和ADT REV 22 时 运行项目时出现 无法解析L的超类 之类的错误 我的项目使用 ActionbarSherlock 和 SlidingMenu 我已经尝试过 将外部 jar 复制到我的项目的 li
  • 为什么 pthread-win32 中主线程比工作线程慢?

    void worker void int clk clock float val 0 for int i 0 i 100000000 i val sin i printf val f n val printf worker d ms n c
  • 如何针对 GitHub 问题上的特定分支

    我想知道是否可以目标问题到存储库的特定分支 使用案例 我有一个有 1 个主分支的仓库 和2个开发分支 A 和 B 根据问题的不同 其他分支会从 A 分支和 B 分支中生长出来 我已经知道可以通过 关键字和问题编号来引用问题提交 但我希望将其
  • 从 GitLab 运行程序/管道中创建版本

    随着 2019 年 1 月 Gitlab 11 7 的发布 我们获得了新的关键功能为您的项目发布版本 https about gitlab com 2019 01 22 gitlab 11 7 released publish releas
  • 如何本地化活动记录错误消息

    我试图找出如何本地化我的 Rails 应用程序中的错误项目名称 当用户使用不正确的数据注册时会出现该错误项目名称 我想出了如何覆盖消息 但不覆盖消息的名称 例如 password 登录 电子邮件 de activerecord errors
  • PowerShell - 在特定范围内执行脚本块

    我正在尝试在 Powershell 中实现像 BDD 框架一样的 RSpec Jasmine 或者至少研究制作一个框架的潜在问题 目前 我在实现简单的前后功能时遇到问题 给定 ErrorActionPreference Stop funct
  • 如何正确创建 Zend Feed?

    我已经成功创建了一个简单的 RSS 提要 但条目不断返回为未读和更新状态 并且每次我要求邮件更新提要时 从客户端删除的条目都会重新出现 我究竟做错了什么 我使用这个简单的函数来创建 rss feed public static functi
  • jquery 设置加载后的高度

    我在设置动态加载的元素的高度时遇到了一些麻烦 我用jqueryload函数将外部 动态 页面加载到当前页面上的 div cbox 中 因为这个子页面是动态的 所以我无法事先知道内容的高度是多少 我想在加载内容后获取高度 并将容器 div 的
  • Android dropbox api 需要重新验证

    在我的应用程序中 我使用 dropbox api 来保存一些文件 没问题 身份验证后 我关闭应用程序并重新启动应用程序 每次我打开应用程序时都需要重新身份验证 我希望应用程序记住我的会话 Dropbox 教程 https www dropb
  • CMake 中预期的构建失败测试

    有时最好检查某些东西是否无法构建 例如 Next line should fail to compile can t convert const iterator to iterator my new container type iter
  • 将部分参数列表传递给 do.call()

    我正在尝试编写一个函数来测试 GBM 模型的一系列超参数 我只希望 GBM 调用中的三个参数发生变化 其余的我想保持静态 do call似乎是答案 因为它接受参数列表并将它们传递给函数 然而 我不知道是否有办法 修复 一些我不想改变的论点
  • 确保启用“Google Maps Android API v2”。当我尝试实施 Google 地图时收到此错误

    我正在使用谷歌地图 但收到此错误 我做了以下事情 得到了我的 sha1 指纹 注册了我的项目并获得了我的项目密钥 我不知道如何启用 Google Maps Android API v2 因为我尝试过的所有链接都是旧的 并且 Google 已
  • 当 PHP 中的某个键被赋值时,数组是否会隐式创建?

    只是想快速验证这一点 它与我在其他语言中的直接经验不同 在其他语言中 必须首先声明数组 然后才能填充值 是的 PHP 将自动创建一个数组给定以下任何一个 foo bar foo 1 bar foo bar bar and of course
  • 更改每个像素的图像并保存到数据库

    我正在制作一个小网页游戏 我正在寻找一种方法来操作每个像素的图像并将其存储在 mysql 数据库中 准确地说 我需要能够执行以下操作 从 mysql 数据库加载图像 250 x 250px 到屏幕上 图像不可见 例如 每个像素的 alpha
  • 在 React 中通过 getBoundingClientRect 接收元素的尺寸

    我想以可靠的方式找出 DOM 元素的尺寸 我的考虑是使用 getBoundingClientRect 来实现此目的 const elementRef useRef
  • 我是否在某处读到过,C++/CLI 使我们走向一个没有“头文件”的社会,就像 Java 一样

    如果是这样 我在创建类时是否应该尽量减少头文件的使用 这可能晚了 3 年 但它仍然显示在谷歌搜索的顶部附近 并且该信息今天仍然有效 就像 3 年前一样 首先 是的 你是对的 对于 C CLI 除了本机 C 类 结构等之外 你不使用 h 文件
  • 实时主机上的 codeigniter 出现内部服务器错误

    我已经部署了一个在主 public html 文件夹中使用 CodeIgniter 的网站 http www myexample com 该项目在本地主机上完美运行 为了从 URL 中删除 index php 它具有以下 htaccess
  • 如何在iOS中添加android之类的toast?

    在android中我们可以直接添加toast 他们有什么方法可以在iOS中添加类似的toast吗 我创建了透明视图来用作吐司 但对于多种文本大小 我必须创建多个视图 iOS 中没有可用的 Android 类型 Toast 控件 如果你想使用
  • 引导程序验证不起作用

    我正在尝试使用验证引导程序 http bootstrapvalidator com 我尝试解决方案为here http jsfiddle net Tkbk9 但它不起作用
  • 确定哪些测试覆盖一行代码

    有没有办法确定可能执行给定代码行的单元测试集 换句话说 你能否自动确定不只是whether给定的行已被覆盖 但覆盖它的实际测试集是什么 考虑一个包含 50K 单元测试的大型代码库 显然 运行所有这些可能需要很长时间 即使不是几天 也可能是几