我正在寻找适用于silverligt的代码覆盖解决方案。它还必须与msbuild一起使用,因为我们在构建服务器中自动运行所有其他单元测试。
与Visual Studio和/或resharper的集成是一个优点,我没有任何反对简单的设置或指向教程的指针。我通常不会修改构建文件,遗憾的是我现在没有时间学习msbuild。
答案 0 :(得分:6)
不幸的是,由于Silverlight运行时中透明的安全模型(即所有应用程序沙箱),这不是一件容易的事。传统的.NET代码覆盖率检测修改了底层程序集,将P / Invoke调用插入到coverage集合工具中。
因此,像Visual Studio 2008代码覆盖率检测工具这样的工具不适用于Silverlight。
要在Silverlight中实现此目的,您需要设计自定义检测程序以及收集和报告该数据的方法。
在Silverlight团队中,我们开发了一个部分解决方案,可以为某些人启用此功能,但尚未准备好发布。有一天可能会在Silverlight Toolkit中查找它。
很抱歉,我今天不知道你的答案。
答案 1 :(得分:2)
按照以下步骤获取代码覆盖率结果;
- 为解决方案添加新的测试项目
- 删除所有现有的类(数据库测试,有序测试等..),这样你只剩下单元测试类(UnitTest1)。
- 从测试类中删除所有无用的注释和crud代码,这样你只剩下一个测试方法(没有注释,甚至没有TestContext)
- 在测试项目中添加对“System.dll”,“System.Windows.dll”的silverlight版本的引用。 (通常位于“C:\ Program Files \ Microsoft SDKs \ Silverlight \ v2.0 \ Reference Assemblies \”下(如果需要,请删除对system.dll的现有引用)
- 添加对被测项目的引用
- 您现在可以针对对象模型编写测试(标准类)
干杯,
答案 2 :(得分:1)
此时的答案是否定(如果杰夫威尔科克斯说不,那就不是;-))。
前一段时间我问过NCover支持这个问题(about their FAQ re Silverlight):
...我使用的是Silverlight 2.0和AFAIK,它只能在浏览器中运行。所以你在谈论SL3还是我错过了什么?
我相信SL3很快就会成为RTMed。如果我升级,我的应用程序是否能够自动运行浏览器(因此使用NCover),或者我是否必须更改它才能执行此操作?
这是我得到的回应:
常见问题解答准确无误,但措辞使其有些混乱。 FAQ主题的含义是NCover在使用// iis参数时不支持覆盖Silverlight代码(v1或v2或v3),因为它在自己的CLR上运行。
但是,Silverlight(v1或v2或v3)应用程序的代码隐藏和支持类是有效的C#/ VB,因此您可以针对应用程序的该部分编写单元测试并使用NUnit / MSTest /运行这些测试Gallio / xUnit / etc,您将获得该部分的报道。
我们还没有调查过,当它在浏览器外部运行时,NCover是否可以收集Silverlight v3的覆盖范围,但我希望我们无法做到。但是,一旦我们确切知道,我们将在文档中记下它。
我认为这意味着实际上不支持Silverlight应用程序 - 您必须“创建标准.NET库并将文件链接到其中以获取覆盖数据”。
答案 3 :(得分:1)
为了澄清以前的帖子,NCover只能涵盖任何.NET进程。它还没有处理Silverlight CLR。在上面提到的案例中,一位用户询问了一个.NET测试框架,该框架触发了针对他的Silverlight应用程序运行的.NET测试。在这种情况下,将涵盖任何.NET(例如,测试框架)。 Silverlight代码不会被涵盖。
答案 4 :(得分:0)
根据NCover FAQ,它可以涵盖silverlight:
[http://docs.ncover.com/ref/3-0/frequently-asked-questions/#q05][1]
到目前为止,我还没有找到任何信息是否真的有效,例如对于silverlight类库。奇怪的是,如果ncover有效,则没有关于它的信息(博客文章等)。在测试Silverlight代码时,是否所有人都使用“创建标准.NET库并将文件链接到其中以获取覆盖数据”路径?
当谈到其他解决方案(甚至商业化)时,我的谷歌搜索没有产生任何结果。
答案 5 :(得分:0)
我从NCover支持部门询问了这个问题。
我的问题是:
让我们说我创建了一个silverlight类 库(项目 - >新项目...) 来自Visual Studio。在这堂课上 图书馆我和几个班级 使用NUnit silverlight模板 包含单元测试的项目 我的silverlight类库:
http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx
我能够很好地运行单元测试 (即使在构建服务器中,我们也是 使用msbuild和TFS)但我不能 使用获取代码覆盖率数据 标准代码覆盖率选项 在Visual Studio中可用。
NCover可以显示代码覆盖率 我的silverlight类库?
我得到了回应:
只要您使用NUnit测试类库,您就应该能够覆盖 他们使用NCover。如果您使用Selenium等工具通过Web浏览器测试它们, 那么你将无法获得报道。
现在我想知道Silverlight团队中是否有人试图使用NCover + NUnit?当然,MS有自己的单元测试框架,所以在“商业意义上”它看起来不太好:)但是如何才能测试它是否有效。