Ошибка доступа к ресурсу проекта из проекта Silverlight Test - PullRequest
1 голос
/ 15 января 2011

Я выполняю модульные тесты для Silverlight 4 в Visual Studio 2010.

Проблема в том, что я не могу использовать ресурсы, добавленные в тестовый проект.

Во время выполнения теста, когда я пытаюсьполучить доступ к ресурсу следующим образом:

[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

Что я вижу, тест Silverlightпроект, созданный в Visual Studio, содержит ссылку на Microsoft.VisualStudio.QualityTools.UnitTestFramework, который представляет собой сборку .net Framework 4.0, а не сборку Silverlight.

Мой вопрос: возможно ли использовать ресурсы в проектах теста Silverlightс помощью ResourceManager сейчас?Если да, то что нужно сделать?

Вот пример тестовый проект

1 Ответ

0 голосов
/ 15 января 2011

Когда я создаю тестовый проект Silverlight, у меня нет этой ссылки.Кроме того, проекты Silverlight не имеют вкладки «Ресурсы» в свойствах проекта, что похоже на ваш проект (полный проект .NET помещает ресурсы проекта в пространство имен Properties.Resources).

Указанный zip-файл поврежденпоэтому я не мог смотреть на проект напрямую, хотя я вполне уверен, что созданный вами тестовый проект - это тестовый проект Full .NET, а не тестовый проект Silverlight.Вам нужно обязательно использовать тестовый проект Silverlight.Затем вы можете добавить файл ресурсов через Добавить новый элемент -> Общие -> Файл ресурсов.

Редактировать:

Ваш проект ссылается на полную DLL-библиотеку тестирования платформы .NET:

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 в настоящее время требуют, чтобы вы запускали их в браузере, и поэтому им нужен класс «Application».Вы можете использовать обычный шаблон приложения Silverlight, хотя вам нужно будет сослаться на упомянутые ранее библиотеки DLL тестирования и внести следующие изменения в код приложения:

private void Application_Startup(object sender, StartupEventArgs e)
{
    RootVisual = UnitTestSystem.CreateTestPage();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...