Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Caliburn编写单元测试以启动WPF弹出窗口_C#_Wpf_Unit Testing_Nunit_Caliburn.micro - Fatal编程技术网

C# 使用Caliburn编写单元测试以启动WPF弹出窗口

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

我想为WPF应用程序(Caliburn micro&autofac)编写一个测试。此测试的目的是显示单元测试用例中的弹出窗口。我试着用独立的WPF窗口写作,它成功了:

但当我试图将其集成到使用Caliburn micro&autofac并包含字典和样式的现有解决方案时,我遇到了一些问题:

    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窗口编写测试用例的链接将是一个加号


谢谢

你到底在测试什么?我想测试一个弹出窗口。如果我使用测试提供虚假数据,它是否正确显示数据及其设计和布局。另一个原因是,在应用程序流期间,此窗口很少打开。所以,我想要一个测试用例,这样每当有人在这个窗口中进行更改时。这是可以测试的。