在过去的几个小时里,我一直在尝试为Silverlight应用程序生成单元测试。
许多帖子都是指“Silverlight单元测试项目”,它是Silverlight工具包的一部分。但是我下载了工具包但仍然没有测试项目,它似乎仅在VS 2010中可用?
我添加了一个“Silverlight类库”项目,并添加了对:
的引用Microsoft.Silverlight.Testing
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测试资源管理器没有发现任何测试。即使在重新构建解决方案并重新启动应用程序之后。
有人有什么想法吗?这甚至可能吗?
答案 0 :(得分:5)
此链接的答案对我有用:
我建议启动一个新的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插件。
答案 1 :(得分:4)
要完成此主题,
Silverlight DLLS位于C:\ Program Files(x86)\ Microsoft SDKs \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Testing
我无法让Resharper 7.1运行测试,但this library有帮助。您需要使用7-zip进行提取,以便不阻止DLLS。然后重新启动Visual Studio 2012,Resharper将运行您的单元测试。
答案 2 :(得分:1)
我相信您需要安装Silverlight单元测试适配器才能让测试显示在测试资源管理器中
答案 3 :(得分:1)
我能够进行一些测试:
鉴于Visual Studio 2012 Professional(带有测试运行器)。
创建面向.NET 4.5的类库,名称为MyProject.Tests
。
参考C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
或您所在的位置。
按照.NET 4.5的常规测试添加测试。
将项目引用添加到MyProject
- 项目定位Silverlight 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'
参考C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll
构建并获得相同的错误。打开*.csproj
并确保提示路径:
xml
<Reference Include="System.Xml">
<HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll</HintPath>
</Reference>
运行测试,例如通过右键点击TestMethod
- &gt; 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>
注意:
HintPath
覆盖。我认为可能有其他方式通过MSBuild脚本修改和/或程序集绑定重定向。
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()
表示需要为SL加载ActiveX
运行时。
[TestMethod]
属性)而不是.NET会导致测试可见,但不会运行。