【发布时间】:2019-09-04 03:16:05
【问题描述】:
我开始考虑在 XUnit 中使用 White UI 测试。
我的测试的基本结构是
- 打开应用程序
- 测试一些东西
- 关闭应用程序
当测试通过时,这非常有效。但是,当测试失败时,应用程序不会关闭。如果多个测试失败,这会导致我的应用程序打开很多实例。
为了解决这个问题,我使用了 try 和 finally 块,但这不是很好。
是否有替代选项可以实现相同的清理行为但看起来更好一些?像“RunOnAssertFail”方法?
[Fact]
public void MainWindowCreated()
{
bool testFailed = false;
Application application = Application.Launch(@"C:\Program\Program.exe");
Window mainWindow = GetWindow(application, "MainWidndow", 500);
try
{
testFailed = true;
mainWindow.Should().NotBe(null, ". Main Widndow could not be found");
testFailed = false;
}
finally
{
if (testFailed)
{
application.Close();
}
}
/*
* Rest of test case
*/
application.Close();
}
private static Window GetWindow(Application application,
string windowName,
int timeoutAfterMilliseconds)
{
Window window = null;
try
{
window = Retry.For(
() => application.GetWindows().First(
windowX => windowX.Title.Trim().Equals(windowName.Trim())),
TimeSpan.FromMilliseconds(timeoutAfterMilliseconds));
}
catch (InvalidOperationException)
{
}
return window;
}
需要xUnit、White 和Fluent Assertions 才能运行。
【问题讨论】:
标签: c# xunit white-framework fluent-assertions