Я начинаю изучать использование белого пользовательского интерфейса с XUnit.
Базовая структура для моих тестов
- Откройте приложение
- Test Something
- Закрыть приложение
Это очень хорошо работает, когда тест пройден. Однако при сбое теста приложение не закрывается. Если несколько тестов не пройдены, это приведет ко множеству открытых экземпляров моего приложения.
Чтобы обойти это, я использую блоки 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 , Белый и Свободные утверждения для запуска.