2011-01-15 114 views
1

我正在为Visual Studio 2010中的Silverlight 4进行单元测试。从Silverlight测试项目访问项目资源时出错

问题是我无法使用添加到测试项目中的资源。

在试运行时,我尝试访问这样的种源:

[TestClass] 
public class Class1 
{ 
    [TestMethod] 
    public void Test1() 
    { 
     // here I have an exception 
     Debug.WriteLine(Properties.Resources.String1); 

,我得到一个异常:

System.TypeLoadException: Unable to load type "System.Runtime.Versioning.TargetFrameworkAttribute" from assembly "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 

堆栈跟踪

System.ModuleHandle.ResolveMethod(Int32 methodToken, RuntimeTypeHandle* typeInstArgs, Int32 typeInstCount, RuntimeTypeHandle* methodInstArgs, Int32 methodInstCount) 
System.ModuleHandle.ResolveMethodHandle(Int32 methodToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) 
System.Reflection.CustomAttributeData..ctor(Module scope, CustomAttributeRecord caRecord) 
System.Reflection.CustomAttributeData.GetCustomAttributes(Module module, Int32 tkTarget) 
System.Reflection.CustomAttributeData.GetCustomAttributes(Assembly target) 
System.Resources.ResourceManager.GetNeutralResourcesLanguage(Assembly a, UltimateResourceFallbackLocation& fallbackLocation) 
System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) 
System.Resources.ResourceManager.GetString(String name, CultureInfo culture) 
SilverlightClassLibraryTestProject1.Properties.Resources.get_String1() in D:\Work\Temp\SilverlightClassLibraryTestProject1\SilverlightClassLibraryTestProject1\Properties\Resources.Designer.cs: line 68 
SilverlightClassLibraryTestProject1.Class1.Test1() in D:\Work\Temp\SilverlightClassLibraryTestProject1\SilverlightClassLibraryTestProject1\Class1.cs: line 13 

我可以请参阅由Visual Studio创建的Silverlight测试项目包含对Microsoft.VisualStudio.QualityTools.UnitTestFramework的引用w这是一个.NET Framework 4.0程序集,而不是Silverlight。

我的问题是:现在可以在ResourceManager的帮助下使用Silverlight Test项目中的资源吗?如果是,那么应该做什么?

下面是一个简单test project

回答

0

当我创建一个Silverlight测试项目,我没有这样的参考。此外,Silverlight项目在项目属性中没有“资源”选项卡,它看起来像您的项目一样(完整的.NET项目将项目资源置于Properties.Resources命名空间下)。

提供的压缩文件已损坏,因此我无法直接查看该项目,但我相当确定您创建的测试项目是完全.NET测试项目而不是Silverlight测试项目。您需要确保使用Silverlight测试项目。然后可以通过添加新项目 - >常规 - >资源文件来添加资源文件。

编辑:

你的项目是referecing一个完整的.NET框架的测试DLL:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 

您需要参考:

C:\Program Files (x86)\MSBuild\..\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Testing\Microsoft.Silverlight.Testing.dll 

C:\Program Files (x86)\MSBuild\..\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Testing\Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll 

注意这些DLL的都在Silverlight Toolkit发现。此外,它看起来像您创建了一个Silverlight类库 - 您应该使用的模板称为“Silverlight单元测试应用程序”。这是因为Silverlight测试目前需要你在浏览器中运行它们,所以他们需要一个“应用程序”类。您可以使用正常的Silverlight应用程序模板,但你必须引用那些前面提到的测试DLL的,并在后面的应用程序代码如下变更:

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    RootVisual = UnitTestSystem.CreateTestPage(); 
} 
+0

我已经重新上传一个测试项目,其他位置。 –

+0

我正在创建一个Silverlight类库测试项目,并且引用了Microsoft.VisualStudio.QualityTools.UnitTestFramework程序集。 它有TestClassAttribute和TestMethodAttribute。如果您的Silverlight测试项目中没有Microsoft.VisualStudio.QualityTools.UnitTestFramework,那么我认为您无法使用[TestClass]等。 –

+0

请注意我已经添加了一个资源文件到项目中,问题是我在测试运行期间无法使用添加的资源 –

相关问题