首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >查找一组测试专门涵盖的.NET代码

查找一组测试专门涵盖的.NET代码
EN

Stack Overflow用户
提问于 2015-03-30 21:58:02
回答 3查看 173关注 0票数 1

对于一组.NET测试(MSTest),是否有一种方法可以找到只由特定测试子集(即单个TestClass)覆盖的代码块?

下面是我的场景:我在一个旧的代码库中工作,随着时间的推移,它已经建立了一个庞大而缓慢的单元和集成测试套件。我们希望减少套件的整体运行时间。一种方法是减少集成测试和单元测试之间的冗余。事实上,一些单元测试可能存在完全冗余的集成测试。

以下是我想做的事:

  1. 收集整个单元和集成测试套件的代码覆盖率。
  2. 查找不覆盖其他测试未覆盖的任何块的集成测试。
  3. 手动验证所报告的测试是否完全冗余,如果是,则删除它们。

编辑:到目前为止,基于反馈的,让我强调代码覆盖率只是一个工具,并且描绘了测试真正测试的不完整的画面。在贴现测试的价值之前,理解它是很重要的。

我们的测试是用MSTest编写的,并使用Visual运行。我熟悉收集代码覆盖率,但我不知道如何查询它。

EN

回答 3

Stack Overflow用户

发布于 2015-03-30 23:03:34

您正在做出一个非常非常危险的假设:如果其他代码已经在测试集成测试,那么集成测试就没有作用。

这是典型的代码覆盖率陷阱。代码覆盖本质上是没有意义的。它能够可靠地向您展示的是那些甚至没有尝试过测试的代码。它不能验证测试是否测试了任何有价值的东西,或者您的软件没有bug。

您不能只是盲目地比较单元测试和集成测试的代码覆盖率,然后在单元测试已经在测试代码时开始删除集成测试。每个集成测试都应该根据其自身的优点进行评估,以确定它是否在测试一些无法用单元测试验证的有价值的东西。

票数 2
EN

Stack Overflow用户

发布于 2015-03-31 10:59:35

OpenCover有一个随测试覆盖的特性,它可以帮助您收集想要的信息。但是,XML可能会变得有点大,这取决于测试和代码基础。看看维基如何使用它。

票数 1
EN

Stack Overflow用户

发布于 2015-03-30 22:26:09

我有点不清楚你是否想

  • 查找重复覆盖相同代码的测试并删除它们(这里需要小心:您可能在同一代码上有两个测试,测试功能的不同方面),或者
  • 是否要找到覆盖特定、标识的代码的所有测试。

无论如何,您需要这样做的是一个测试覆盖工具,它可以在每次测试的基础上收集覆盖向量,然后确定哪些覆盖向量包含特定的代码和/或哪些向量相交。

我们的测试覆盖工具可以为多种语言(包括C# )做到这一点。您必须稍微修改MSTest框架,以跟踪它正在运行的测试,并在测试完成时为每个测试转储该测试的测试覆盖向量。

测试覆盖向量显示UI是该工具的一部分,它将允许您组合任意一组向量,并比较这些组合(相交?补充?不一样?)和其他的组合。要确定哪一个向量相交,您需要编写一个小例程来读取测试覆盖向量(本质上是位字符串),并以配对方式计算它们的交叉点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29357092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档