Не удается найти ресурс с именем / ключом - PullRequest
3 голосов
/ 15 сентября 2010

Я пытаюсь выполнить модульное тестирование пользовательского интерфейса с помощью набора инструментов Silverlight 4.

Когда я пытаюсь создать экземпляр UserControl, он выдает исключение, потому что в XAML UserControl он использует определенный App.xaml стиль.

Есть ли способ как-то загрузить ресурс, прежде чем я создам экземпляр UserControl? Я поступаю неправильно?

Вот код модульного теста:

        [TestMethod]
    public void ExerciseTimePeriodUserInterface()
    {
        CustomUserControls.TimePeriodFilter timePeriodFilter = new CustomUserControls.TimePeriodFilter();
    }

Вот ссылка на стиль в UserControl:

<Border Style="{StaticResource FilterBorderWrapper}">

И, наконец, вот стиль, определенный в App.xaml:

    <Style TargetType="Border" x:Key="FilterBorderWrapper">
        <Setter Property="Background" Value="#F1F5FB" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="BorderBrush" Value="#CBD9E9" />
        <Setter Property="CornerRadius" Value="2" />
        <Setter Property="Margin" Value="2" />
    </Style>

Ответы [ 3 ]

1 голос
/ 08 декабря 2010

Если все ваши ресурсы размещены в ResorceDictionaries.Вы можете просто создать экземпляр приложения и добавить этот словарь в ресурсы.Пожалуйста, посмотрите на образец:

Application _app = new Application();
ResourceDictionary dictionary = new ResourceDictionary();
dictionary.Source = new Uri("pack://application:,,,/Gui.Mvvm;component/Themes/YourResourceDictionary.xaml");
_app.Resources.MergedDictionaries.Add(dictionary);

Для моего приложения WPF это прекрасно работает.После написания этого кода я смог протестировать мои селекторы шаблонов, селекторы DataTemplate и так далее.Весь код, используемый в вызовах codebehind к

Application.Current.FindResource()

, работает довольно хорошо.

0 голосов
/ 05 октября 2010

Rick

В принципе, я получаю ту же ошибку. Позже я просто скопировал ресурсы и все определения в файл Test-Projects App.xaml (у меня также есть ресурс Styles.xaml), и мои тесты пользовательского интерфейса работают без проблем.

Конечно, это никогда не лучшее решение для копирования "чего-либо", но эй, мне действительно безразличны стили. Кроме того, вы даже можете определить собственные стили для панели тестирования пользовательского интерфейса.

НТН

Thomas

0 голосов
/ 16 сентября 2010

Вы не можете легко выполнить юнит-тестирование пользовательских элементов управления вне контекста. Слишком много зависимостей.

Вы можете тестировать свои модели представлений с помощью модульных тестов (которые должны быть там, где в любом случае находится весь ваш код) и элементов управления Silverlight с некоторой формой автоматизации графического интерфейса (или людей, если вы не можете позволить себе новейшие инструменты тестирования GUI). 1003 *

Как и предполагал VC 74, если вы еще не используете MVVM, вам, вероятно, следует (если вы хотите выполнить модульное тестирование Silverlight).

...