Элементы, не связанные при тестировании с белым фреймворком - PullRequest
1 голос
/ 29 ноября 2011

У меня есть приложение wpf с простым окном, которое показывает текст в текстовом поле, связанный со свойством ViewModel. Когда я запускаю приложение, я вижу текст в текстовом поле, но когда я выполняю тест на основе белого цвета, у меня появляются случайные результаты:

  • в большинстве случаев он не связан и тест не пройден.
  • иногда он связан (я вижу текст в окне, выделенный белым), но белый выдает исключение, когда код хочет получить окно.
  • иногда (очень мало) это работает.

Код, который я пытаюсь выполнить, таков:

<Window x:Class="Sample.Tests.Wpf.MainWindow"     
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"
        Height="350"
        Width="525">   
  <Grid>
    <TextBox Height="23"
             HorizontalAlignment="Left"
             Margin="22,19,0,0"
             Name="name"
             Text="{Binding Path=CountryName}" 
             VerticalAlignment="Top"
             Width="120" />
  </Grid>
</Window>

Код позади:

namespace Sample.Tests.Wpf
{
  public partial class MainWindow
  {
    public MainWindow()
    {
      InitializeComponent();
      Loaded += delegate { DataContext = new MainWindowViewModel
                                         {
                                           CountryName = "Argentina"
                                         };
                          };
    }
  }
}

и тест выглядит так:

var app = Application.Launch("Sample.Tests.Wpf.exe");
var window = app.GetWindow("MainWindow");
Assert.IsNotNull(window);
var textbox = window.Get<TextBox>("name");
Assert.AreEqual("Argentina", textbox.Text);

Есть идеи?

1 Ответ

1 голос
/ 29 ноября 2011

Событие Loaded не вызывается до тех пор, пока окно не будет визуализировано.Я предполагаю, что это как-то связано со временем этого события.

Работает ли это, если вы просто назначаете DataContext вместо ожидания ответа?

...