C# xUnit和White测试失败清理

C# xUnit和White测试失败清理,c#,xunit,white-framework,fluent-assertions,C#,Xunit,White Framework,Fluent Assertions,我开始考虑在XUnit中使用白色UI测试 我的测试的基本结构是 打开应用程序 试验 关闭应用程序 当测试通过时,这种方法非常有效。但是,当测试失败时,应用程序不会关闭。如果多个测试失败,这将导致我的应用程序有很多打开的实例 为了解决这个问题,我使用了try和finally块,但这不是很好 是否有一个替代选项可以实现相同的清理行为,但看起来更好一点?像“RunOnAssertFail”方法 需要,并运行。在玩过之后,我意识到断言是抛出异常而不是实际断言 因此,为了帮助清理,try-catch

我开始考虑在XUnit中使用白色UI测试

我的测试的基本结构是

  • 打开应用程序
  • 试验
  • 关闭应用程序
当测试通过时,这种方法非常有效。但是,当测试失败时,应用程序不会关闭。如果多个测试失败,这将导致我的应用程序有很多打开的实例

为了解决这个问题,我使用了try和finally块,但这不是很好

是否有一个替代选项可以实现相同的清理行为,但看起来更好一点?像“RunOnAssertFail”方法



需要,并运行。

在玩过之后,我意识到断言是抛出异常而不是实际断言

因此,为了帮助清理,try-catch块更合适

try
{
    mainWindow.Should().NotBeNull("because this window is required for the rest of the test");
}
catch(XunitException)
{
    application.Close();
    throw;
}

然而,这仍然不理想。

在玩过之后,我意识到断言是抛出异常而不是实际断言

因此,为了帮助清理,try-catch块更合适

try
{
    mainWindow.Should().NotBeNull("because this window is required for the rest of the test");
}
catch(XunitException)
{
    application.Close();
    throw;
}

但是,这仍然不理想。

在测试类上实现
IDisposable
并用它来清理怎么样?

在测试类上实现
IDisposable
并用它来清理怎么样?

我想了一下,我的问题是,根据测试的位置,清理可能会有所不同。例如,如果测试涉及将信息添加到数据库中,以查看是否列出了该信息,那么在删除数据之前会出现问题,清理工作将涉及删除该数据。这通常会在测试中完成,但在到达之前会停止。使用IDISPOSILD会假设每次测试都是相同的,但不幸的是情况并非如此,你也可以考虑尝试。这是一个小小的BDD风格的框架,使清理测试变得更加容易。看看《入门》吧,我想到了这一点,我的问题是,根据测试的位置,清理可能会有所不同。例如,如果测试涉及将信息添加到数据库中,以查看是否列出了该信息,那么在删除数据之前会出现问题,清理工作将涉及删除该数据。这通常会在测试中完成,但在到达之前会停止。使用IDISPOSILD会假设每次测试都是相同的,但不幸的是情况并非如此,你也可以考虑尝试。这是一个小小的BDD风格的框架,使清理测试变得更加容易。请在查看入门指南