gpt4 book ai didi

C# 单元测试打开 Window.xaml

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:41 27 4
gpt4 key购买 nike

我需要在单元测试中打开我的 Window.xaml。我尝试了一个简单的代码如下:

 [Test]
public void Test_window()
{
var mw = new MainWindow();
mw.Show();
}

以上代码以错误结束。

The calling thread must be STA, because many UI components require this.

之后,我尝试了下面的代码:

     [Test]
public void Test_window()
{
Thread th = new Thread(new ThreadStart(delegate
{
var mw = new MainWindow();
mw.Show();
}));

th.ApartmentState = ApartmentState.STA;
th.Start();

}

在这种情况下,测试成功通过,但没有显示窗口。由于我是 WPF 的新手,如果有任何建议或指导在这里可用,我将不胜感激。

谢谢。

最佳答案

我认为它已显示,但速度非常快,因为您无需等待窗口。你可以这样做:

[Test]
public void Test_window()
{
var showMonitor = new ManualResetEventSlim(false);
var closeMonitor = new ManualResetEventSlim(false);

Thread th = new Thread(new ThreadStart(delegate
{
var mw = new MainWindow();
mw.Show();

showMonitor.Set();
closeMonitor.WaitOne();
}));

th.ApartmentState = ApartmentState.STA;
th.Start();

showMonitor.WaitOne();
Task.Delay(1000).Wait();
//anything you need to test
closeMonitor.Set();
}

只用一台显示器也可以实现同样的效果,但这样可读性更好。

关于C# 单元测试打开 Window.xaml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29919055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com