对于一组.NET测试(MSTest),是否有一种方法可以找到只由特定测试子集(即单个TestClass
)覆盖的代码块?
下面是我的场景:我在一个旧的代码库中工作,随着时间的推移,它已经建立了一个庞大而缓慢的单元和集成测试套件。我们希望减少套件的整体运行时间。一种方法是减少集成测试和单元测试之间的冗余。事实上,一些单元测试可能存在完全冗余的集成测试。
以下是我想做的事:
编辑:到目前为止,基于反馈的,让我强调代码覆盖率只是一个工具,并且描绘了测试真正测试的不完整的画面。在贴现测试的价值之前,理解它是很重要的。
我们的测试是用MSTest编写的,并使用Visual运行。我熟悉收集代码覆盖率,但我不知道如何查询它。
发布于 2015-03-30 23:03:34
您正在做出一个非常非常危险的假设:如果其他代码已经在测试集成测试,那么集成测试就没有作用。
这是典型的代码覆盖率陷阱。代码覆盖本质上是没有意义的。它能够可靠地向您展示的是那些甚至没有尝试过测试的代码。它不能验证测试是否测试了任何有价值的东西,或者您的软件没有bug。
您不能只是盲目地比较单元测试和集成测试的代码覆盖率,然后在单元测试已经在测试代码时开始删除集成测试。每个集成测试都应该根据其自身的优点进行评估,以确定它是否在测试一些无法用单元测试验证的有价值的东西。
发布于 2015-03-31 10:59:35
发布于 2015-03-30 22:26:09
我有点不清楚你是否想
无论如何,您需要这样做的是一个测试覆盖工具,它可以在每次测试的基础上收集覆盖向量,然后确定哪些覆盖向量包含特定的代码和/或哪些向量相交。
我们的测试覆盖工具可以为多种语言(包括C# )做到这一点。您必须稍微修改MSTest框架,以跟踪它正在运行的测试,并在测试完成时为每个测试转储该测试的测试覆盖向量。
测试覆盖向量显示UI是该工具的一部分,它将允许您组合任意一组向量,并比较这些组合(相交?补充?不一样?)和其他的组合。要确定哪一个向量相交,您需要编写一个小例程来读取测试覆盖向量(本质上是位字符串),并以配对方式计算它们的交叉点。
https://stackoverflow.com/questions/29357092
复制相似问题