首页 文章

如何获取CSLA调用的代码的代码覆盖率信息?

提问于
浏览
4

我目前正在研究和决定我公司的代码覆盖工具,到目前为止还尝试过NCover(Bolt和Desktop),DotCover和NCrunch . 到目前为止,我尝试过的所有工具都可以很好地测量/突出显示由单元测试直接调用的代码中的代码覆盖率,但是任何通过CSLA(例如DataPortal_Fetch)调用的代码都不会被检测为被覆盖 . 由于我们的代码库中有很多代码都存在于这些函数中,因此我发现在我需要测试和测量的大部分内容中,工具几乎无用 .

我的问题是如何获得CSLA代码的代码覆盖率结果?有没有人知道可以使用这些类型的调用的工具,或者我可以使用某些选项/扩展来获得我正在使用的工具的覆盖率结果?

该项目使用C#编码,我使用的是Visual Studio 2013 Professional,CSLA 3.8和.NET 4.0 . 我有最新版本的NCover Bolt和DotCover(两者都在试用),以及我能找到的最新OpenCover .

提前致谢!

2 回答

  • 1

    NCover支持 .

    如果您使用的是NCover Desktop,则可以自动配置以检测测试正在加载的任何.NET代码(Bolt只能分析测试运行程序) .

    我们有一个显示自动检测NUnit的视频,例如:http://www.ncover.com/resources/videos/ncover-creating-a-new-code-coverage-project

    在这个帮助文档中有很多相同的信息:http://www.ncover.com/support/docs/desktop/user-guide/coverage_scenarios/how_do_i_collect_data_from_nunit

    如果您有其他问题,请通过support@ncover.com与我们联系 . 希望这可以帮助 .

  • 1

    与TyCobb完全过时的观点不同,当前版本的CSLA不会通过反射调用方法(iOS上除外),并且自2007年左右以来就没有 . 但数据门户确实使用表达式树进行动态调用,这可能是导致您遇到麻烦的问题 .

    当前版本的CSLA中的一个选项是数据门户现在由接口描述,因此您可以模拟数据门户,可能创建一个除了直接调用DP_XYZ方法之外什么都不做的模拟 . 即使这很棘手,除非你将它们公开并允许你的应用程序中的其他代码轻松破解封装(yuck) . 问题是你不能在不使用反射的情况下调用方法,或者重写CSLA中使用的动态表达式树调用代码...

    虽然代码覆盖工具可能会看到代码执行,如果它是通过反射而不是通过运行时编译表达式运行的?

相关问题