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

时间:2014-05-05 14:37:36

标签: c# visual-studio-2013 code-coverage csla

我目前正在为我的公司研究和决定代码覆盖率工具,到目前为止还尝试过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 个答案:

答案 0 :(得分:1)

与TyCobb完全过时的观点不同,CSLA的当前版本不会通过反射调用方法(iOS上除外),并且自2007年左右开始调用。但数据门户确实使用动态调用表达树,这可能是导致你麻烦的问题。

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

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

答案 1 :(得分: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与我们联系。希望这会有所帮助。