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