【问题标题】:Unit test by skipping library functions for code coverage通过跳过库函数来进行代码覆盖的单元测试
【发布时间】:2018-03-06 01:35:29
【问题描述】:

我正在尝试在 MS Test 中为 CMS 应用程序创建一个单元测试,其中我在解决方案中编写的函数数量很少,大部分函数都来自 CMS 框架。

问题:

当我获取代码覆盖率时,它显示不到 1%。但这种报道毫无意义。

问题:

我如何才能找到仅覆盖我编写的函数而跳过 cms 框架附带的库函数的覆盖范围?

【问题讨论】:

    标签: c# .net unit-testing code-coverage mstest


    【解决方案1】:

    您可以使用ExcludeFromCodeCoverage 属性。

    您可能需要将 CMS 调用隔离到可以用此属性装饰的类或方法以跳过库函数。

    【讨论】:

    • 我不确定,我可以改变框架代码,我需要保持框架代码不变并获得不包括框架代码的覆盖范围。
    • 这个想法是排除 CMS 层的中间层。 @Ipsit 答案看起来更适合您想要的。
    【解决方案2】:

    您可以配置您的代码覆盖范围应查找哪些程序集。

    您需要为单元测试编辑 .runsettings 文件并添加此文件

    <ModulePaths>  
      <Exclude>  
       <ModulePath>Name of the dll goes here</ModulePath>  
       <!-- Add more ModulePath nodes here. -->  
      </Exclude>  
    </ModulePaths>  
    

    更多信息请参考链接https://msdn.microsoft.com/en-IN/library/jj159530.aspx

    【讨论】:

    • 如果这可以完全通过配置排除 CMS 调用,那比我的回答 +1 更好
    • 是的,我希望,需要检查
    • 这里有个catch,单位是整个DLL,如果我在那个DLL里面写了函数呢?如何忽略我没有写在那个 DLL 中的函数?
    • 我认为只添加需要在 ModulePath 中进行单元测试的程序集,然后通过应用 ExcludeFromCodeCoverage 属性再次过滤将帮助您,正如@JeremyThompson 所说。
    • 这对你有用吗 只包括特定的函数 ^Fabrikam\..*.*\.EqualTo(.*
    猜你喜欢
    • 1970-01-01
    • 2016-07-20
    • 2021-09-10
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多