代码之家  ›  专栏  ›  技术社区  ›  Anonymous

如何在测试Silverlight时获得代码覆盖率

  •  15
  • Anonymous  · 技术社区  · 15 年前

    我正在寻找与silverligt一起工作的代码覆盖解决方案。它还必须与msbuild一起工作,因为我们在生成服务器中自动运行所有其他单元测试。

    与visual studio和/或resharper的集成是一个优势,我对简单的设置或指向教程的指针没有任何异议。我通常不修改生成文件,不幸的是,我现在没有时间学习msbuild。

    6 回复  |  直到 14 年前
        1
  •  6
  •   Jeff Wilcox    15 年前

    不幸的是,由于silverlight运行时中的透明安全模型(即所有应用程序沙盒),这不是一个容易的任务。传统的.NET代码覆盖率检测修改底层程序集,插入对覆盖率收集工具的P/Invoke调用。

    因此,像visual studio 2008代码覆盖率检测工具这样的工具不能与silverlight一起工作。

    要在silverlight中实现这一点,您需要设计一个自定义的检测程序以及一种收集和报告数据的方法。

    在silverlight团队中,我们已经开发了一个部分解决方案,可以为某些人启用它,但它还没有准备好发布。找一天在Silverlight工具包中找到它,可能吧。

    对不起,我今天不知道你的答案。

        2
  •  2
  •   Naveed    15 年前

    遵循以下步骤并获得代码覆盖率结果;

    -向解决方案中添加新的测试项目
    -删除所有现有的类(数据库测试、有序测试等),以便只剩下单元测试类(unittest1)。
    -从测试类中删除所有无用的注释和crud代码,这样您只剩下一个测试方法(没有注释,甚至没有testcontext)
    -将对system.dll、system.windows.dll的Silverlight版本的引用添加到测试项目中。(通常位于C:\Program Files\Microsoft SDKS\Silverlight\v2.0\reference assemblies\(如果需要,请先删除对system.dll的现有引用)
    -添加对正在测试的项目的引用
    -现在可以针对对象模型(标准类)编写测试

    干杯,

    裁判: http://weblogs.asp.net/rosherove/archive/2008/12/27/unit-testing-in-silverlight-land-with-typemock-isolator.aspx

        3
  •  1
  •   Mark    15 年前

    在这一点上,答案是不(如果杰夫·威尔科克斯说不,那就是不;-))。

    我刚才问过NCover支持这个问题( about their FAQ re Silverlight ):

    …我正在使用Silverlight 2.0,但它只能在浏览器中运行。你是在说SL3还是我漏掉了什么?

    我相信SL3很快就会进行RTMed。如果我升级,我的应用程序是否能够自动运行出浏览器(并因此使用ncover),或者我必须更改它才能执行此操作?

    我得到的答复是:

    FAQ是准确的,但它的措辞使它有点混乱。faq主题的意思是ncover在使用//iis参数时不支持覆盖silverlight代码(v1、v2或v3),因为它在自己的clr上运行。

    但是,silverlight(v1、v2或v3)应用程序的代码隐藏和支持类是有效的c/vb,因此您可以针对该应用程序部分编写单元测试,并使用nunit/mstest/gallio/xunit/etc运行这些测试,您将获得该部分的覆盖率。

    我们还没有调查ncover是否可以在silverlight v3在浏览器外运行时收集覆盖率,但我预计我们将无法。但是,一旦我们确定了,我们将在文档中记录下来。

    我认为这意味着实际上Silverlight应用不受支持——你必须“创建标准的.NET库并将文件链接到其中以获取覆盖率数据”。

        4
  •  1
  •   IronQuill    14 年前

    为了澄清以前的文章,ncover只能覆盖任何.net进程。它尚未处理Silverlight CLR。在上述情况下,一个用户询问了一个.NET测试框架,该框架激发了针对其Silverlight应用程序运行的.NET测试。任何.net(例如,测试框架)都将包含在这个场景中。不会包含Silverlight代码。

        5
  •  0
  •   Anonymous    15 年前

    根据NCover常见问题解答,它可以覆盖Silverlight:

    [ http://docs.ncover.com/ref/3-0/frequently-asked-questions/#q05][1]

    到目前为止,我还没有找到任何信息,例如,对于silverlight类库来说,这是否有效。奇怪的是,如果ncover工作,没有关于它的信息(博客文章等)。测试Silverlight代码时,是否每个人都在使用“创建标准.NET库并将文件链接到其中以获取覆盖率数据”路径?

    当涉及到其他解决方案(甚至是商业)时,我的谷歌搜索没有产生任何结果。

        6
  •  0
  •   Anonymous    15 年前

    我是从NCover支持部问的。

    我的问题是:

    假设我创建了一个Silverlight类 库(项目->新建项目…) 来自visual studio。在这个班上 图书馆我有几门课 使用nunit silverlight模板 包含单元测试的项目 我的Silverlight类库:

    http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx

    我可以很好地运行单元测试 (即使在构建服务器中,我们 使用msbuild和tfs),但我不能 使用 标准代码覆盖选项 在visual studio中可用。

    可以显示的代码覆盖率 我的Silverlight类库?

    我得到的答复是:

    只要你用nunit测试类库,你应该能够 他们用NCover。如果使用selenium这样的工具通过web浏览器测试它们, 那你就不能得到保险了。

    现在我想知道Silverlight团队中是否有人试图使用ncover+nunit?当然,ms有自己的单元测试框架,所以在“业务意义上”看起来就不那么好了:)但是测试一下这是否有效呢。