我在玩弄 NUint,希望能找到一种方法来实现哪一行代码在哪个测试中通过。
想象一下,我有一个方法,我有 3 个测试。有没有办法找出哪个测试检查哪一行代码?
使用过 NCover,我知道您可以找出哪些线路已经过测试,哪些线路没有经过测试。但是,您真的看不到哪个单元检查了该代码。
在处理大量测试时它真的很有用......
我在玩弄 NUint,希望能找到一种方法来实现哪一行代码在哪个测试中通过。
想象一下,我有一个方法,我有 3 个测试。有没有办法找出哪个测试检查哪一行代码?
使用过 NCover,我知道您可以找出哪些线路已经过测试,哪些线路没有经过测试。但是,您真的看不到哪个单元检查了该代码。
在处理大量测试时它真的很有用......
JetBrains dotCover可以帮助您获取所需的信息。它与 ReSharper 单元测试运行程序集成并收集每个测试数据。您可以查看每个特定测试涵盖了哪些代码(在 VS 中具有相应的突出显示)。更有趣的是,对于每段代码,您都可以获得涵盖它的测试列表并轻松地重新运行它们。
此处提供更多信息:http: //blogs.jetbrains.com/dotnet/2010/07/show-covering-test-with-dotcover/
嗨,因为大多数人已经回应,目前使用大多数覆盖率工具执行此操作的唯一方法是自行运行每个测试,然后查看每个测试的覆盖率。
然而,这是可能的,但需要一些努力,使用 OpenCover。如果您按照到达的顺序捕获并存储来自测试和目标的所有序列点,然后逐个测试地分析这些结果,这就是 OpenCover 的原始目标之一 - https://github.com/萨维尔德/opencover/wiki。目前 OpenCover 只是聚合这些结果,然后丢弃访问数据,但它们可以被存储。当然,如果存在任何并行运行的测试,您必须了解它们。数据量可能令人生畏,这也是它尚未实施的原因之一。
您可以调试您的测试。如果您使用的是 NUnit,您可以将该过程附加到您的 VS。
您正在寻找的术语是“代码覆盖率”。
我没有任何经验如何使用 NUnit 执行此操作,但似乎有一个 codeplex 项目可用于 NUnit:http ://codecoveragerunner.codeplex.com/
如果您想查看哪个测试正在测试哪一行代码,您可以在代码行上放置一个断点并调试您的测试?当你命中断点时,检查哪个测试是
当有其他测试抛出异常时,您可以禁用 break on exception 选项:
NCover 是一个可以用来计算单元测试覆盖率的工具。请参阅 NCover.com。
最简单的方法是下载并安装TestDriven.NET的个人版,它可以运行您的单元测试,并且可以选择使用 NCover 运行和报告代码覆盖率。请注意,较新的 NCover 版本是商业版本,但 TD.NET 中包含的版本有点旧,但可以免费使用。
我不知道任何可以直接实现与您正在寻找的匹配的东西。我最近做了一个关于自动故障定位的项目,我们需要这个确切的功能,我们想出的唯一解决方案是推出我们自己的测试运行器,它还收集每种方法的覆盖率信息。
使用引入了Test Impact Analyzer的 Visual Studio 2010(Premium 和 Ultimate)可能有一种间接的方式来实现这一点。这使您可以确定哪些测试会影响对源代码的更改。但是,这仅适用于 MSTest。您可以使用此博客文章中的技术来允许您的 NUnit 测试在 MSTest 下运行。
简单的答案是,“单独运行每个测试并收集该测试的测试覆盖率数据”。
你如何组织这可能取决于特定的测试覆盖工具,以及你如何选择运行你的测试。
对于我们的测试覆盖率工具,测试覆盖率检测步骤将明确的“TestCoverageDump”方法添加到您的软件中。通常对这个方法的调用被插入到你的应用程序的“主”程序中,这样当它退出时,你可以获得你运行的任何测试的测试覆盖率数据。
对于您的任务,您希望修改单元测试运行代码,以在每次测试后对“TestCoverageDump”进行显式调用,然后是“TestCoverageReset”(也插入),以便每个测试都有自己的向量。您如何选择将测试名称与向量相关联完全由您控制,代价是对源代码中提供的“TestCoverageDump”代码稍作调整。
我们的测试覆盖率显示工具可以轻松组合所有单独的向量,为您提供整体视图。或者您可以查看任何特定向量的覆盖范围。显示工具还可以让您比较不同测试的覆盖率(它们在哪里相交?一个测试什么,另一个不测试?)
拥有每个测试的覆盖率数据还可以让您确定需要再次运行哪些测试。如果您修改代码并重新运行检测器,它将根据向量先前覆盖的修改代码告诉您需要再次运行哪些测试覆盖向量(例如,哪些测试)。
如果您使用的是 Visual Studio,您应该查看 Chris Dexter 的扩展“运行 Coverlet 报告”。 https://marketplace.visualstudio.com/items?itemName=ChrisDexter.RunCoverletReport
除了上面的综合报告,它还可以做代码高亮,你可以看到哪些代码行被完全覆盖,部分被覆盖,哪些没有。