Silverlight 5 VS 2012单元测试

本文关键字:单元测试 2012 VS Silverlight | 更新日期: 2023-09-27 18:03:25

在过去的几个小时里,我一直在尝试为Silverlight应用程序生成一个单元测试。

许多帖子提到了"Silverlight单元测试项目",它是Silverlight工具包的一部分。但是我下载了工具包,仍然没有测试项目,它似乎只在VS 2010中可用?

我添加了一个"Silverlight类库"项目,并添加了以下引用:

  1. Microsoft.Silverlight.Testing
  2. Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight

和下面的TestClass:

using Microsoft.Silverlight.Testing;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTesting
{
    [TestClass]
    public class Class
    {
        [TestMethod]
        public void TestMethod()
        {
            .....    
        }
    }
}

但是Visual Studio 2012 Test Explorer没有发现任何测试。即使在重新构建解决方案并重新启动应用程序之后。

有人有什么想法吗?这可能吗?

Silverlight 5 VS 2012单元测试

这个链接有适合我的答案:

http://social.msdn.microsoft.com/forums/vstudio/en us/5e991b0d - 8061 - 4 - c4e a17d - 82 b4abd58d6c/vs - 2012 - silverlight unittest

我建议启动一个新的Silverlight项目并安装SilverlightToolkit-Testing NuGet包。在您的测试文件中,放入Microsoft.Silverlight.Testing和Microsoft.VisualStudio.TestTools.UnitTesting .并定期使用[TestClass]和[TestMethod]属性。要运行它们,可以使用通过将RootVisual = UnitTestSystem.CreateTestPage();放在App.Application_Startup()中,使用Silverlight单元测试适配器(目前是v0.0.1和也可以(到目前为止最好的方法)安装ReSharper和AgUnit插件

要完成这个线程,

Silverlight dll位于C:'Program Files (x86)'Microsoft sdk 'Silverlight'v5.0'Toolkit'dec11'Testing

我无法得到Resharper 7.1来运行测试,但是这个库有帮助。您需要使用7-zip进行解压,这样dll才不会被阻塞。然后重新启动Visual Studio 2012, Resharper将运行你的单元测试。

我认为您需要安装Silverlight单元测试适配器才能使测试显示在测试资源管理器

  • http://visualstudiogallery.msdn.microsoft.com/caca1e81 becb - 41 - e4 - 9110 bc247f3f400b?src=vside

我可以运行一些测试:

  1. 给定Visual Studio 2012 Professional(with test runner)

  2. 创建。net 4.5类库,命名为MyProject.Tests

  3. 参考C:'Program Files (x86)'Microsoft Visual Studio 11.0'Common7'IDE'PublicAssemblies'Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll或从您的位置

  4. 添加MyProject项目参考-针对Silverlight 5的项目

  5. 添加一些测试。构建。可能会得到缺少引用的错误: Error 12 The type 'System.Xml.Serialization.IXmlSerializable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Xml, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'

  6. 参考C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'Silverlight'v5.0'System.Xml.dll

  7. 构建并得到相同的错误。打开*.csproj并确保提示路径:xml <Reference Include="System.Xml"> <HintPath>C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'Silverlight'v5.0'System.Xml.dll</HintPath> </Reference>

  8. 运行测试,例如通过右键单击TestMethod -> Run Tests。可能会出现错误: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM'Software'Microsoft'Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM'Software'Microsoft'Fusion!EnableLog]. 修复: <Reference Include="System.Windows"> <HintPath>C:'Program Files (x86)'Reference Assemblies'Microsoft'Framework'Silverlight'v5.0'System.Windows.dll</HintPath> </Reference>

指出:

  1. 回想一下,Silverlight 5程序集的格式与。net 4.5相同。
  2. 测试失败,因为。net 4.5程序集是项目的默认设置,我们需要通过HintPath覆盖。我认为可能有其他方式通过MSBuild脚本修改和/或程序集绑定重定向。
  3. 。. NET核心程序集是从4.5开始加载的,如果这些程序集与Silverlight不同,可能会失败。我希望不是。
  4. 依赖于Silverlight托管运行时的功能可能会失败。比如显示Silverlight窗口或访问HTML DOM。这是重构代码使其与Silverlight无关的良好指标。可能的错误:
<>之前 Test Outcome: Failed Result Message: System.DllNotFoundException: Unable to load DLL 'agcore': The specified module could not be found. (Exception from HRESULT: 0x8007007E) Result StackTrace: at MS.Internal.XcpImports.Application_GetCurrentNative(IntPtr context, IntPtr& obj) at MS.Internal.XcpImports.Application_GetCurrent(IntPtr& pApp) at System.Windows.Application.get_Current() 之前

表示需要将ActiveX运行时加载到进程中。

  • 引用Silverlight Toolkit版本的测试程序集(里面有[TestMethod]属性)而不是。net会导致测试可见,但不能运行。