C# 使用Caliburn编写单元测试以启动WPF弹出窗口
我想为WPF应用程序(Caliburn micro&autofac)编写一个测试。此测试的目的是显示单元测试用例中的弹出窗口。我试着用独立的WPF窗口写作,它成功了: 但当我试图将其集成到使用Caliburn micro&autofac并包含字典和样式的现有解决方案时,我遇到了一些问题:C# 使用Caliburn编写单元测试以启动WPF弹出窗口,c#,wpf,unit-testing,nunit,caliburn.micro,C#,Wpf,Unit Testing,Nunit,Caliburn.micro,我想为WPF应用程序(Caliburn micro&autofac)编写一个测试。此测试的目的是显示单元测试用例中的弹出窗口。我试着用独立的WPF窗口写作,它成功了: 但当我试图将其集成到使用Caliburn micro&autofac并包含字典和样式的现有解决方案时,我遇到了一些问题: public MyViewModelTest() { this.repository = new MockRepository(); var eventAggre
public MyViewModelTest()
{
this.repository = new MockRepository();
var eventAggregator = this.repository.Stub<IEventAggregator>();
//Other dependencies
viewModel = new MyViewModel(eventAggregator, other dependencies);
GenerateDummyData();
}
[Test]
public void OpenMyViewModelTest()
{
var uiThread = new Thread(Show);
uiThread.SetApartmentState(ApartmentState.STA);
uiThread.Start();
// Wait for the UI thread to finish
uiThread.Join();
}
private void Show()
{
//TODO make a new window to test and uncomment it.
var fg = new MyView { Height = 500, Width = 500, DataContext = viewModel };
//var fg = new MainView { Height = 500, Width = 500, DataContext = viewModel };
fg.ShowDialog();
}
publicMyViewModelTest()
{
this.repository=new MockRepository();
var eventAggregator=this.repository.Stub();
//其他依赖项
viewModel=新的MyViewModel(eventAggregator,其他依赖项);
GenerateDummyData();
}
[测试]
public void OpenMyViewModelTest()
{
var uiThread=新线程(显示);
SetApartmentState(ApartmentState.STA);
uiThread.Start();
//等待UI线程完成
uiThread.Join();
}
私人电视节目()
{
//TODO创建一个新窗口来测试和取消注释它。
var fg=newmyview{Height=500,Width=500,DataContext=viewModel};
//var fg=newmainview{Height=500,Width=500,DataContext=viewModel};
fg.ShowDialog();
}
现在,如果我从单独的测试项目解决方案执行测试(而不是在UI项目中,视图、视图模型可用),我会得到一个异常:
安装程序:System.BadImageFormatException:无法加载文件或程序集“ABC.UIAssemblyName,版本=1.0.0.0,区域性=中性,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序
若我从WPF UI项目复制并运行测试,那个么会出现一个空窗口
所以,我想知道我是否错过了一些东西。
我是否需要在测试中显式地向WPF窗口提供样式资源、字典和图像等
一个关于如何使用caliburn micro为WPF窗口编写测试用例的链接将是一个加号
谢谢你到底在测试什么?我想测试一个弹出窗口。如果我使用测试提供虚假数据,它是否正确显示数据及其设计和布局。另一个原因是,在应用程序流期间,此窗口很少打开。所以,我想要一个测试用例,这样每当有人在这个窗口中进行更改时。这是可以测试的。