我有一个OneTimeSetup
,我想在运行测试(数据库,REST端点等)之前验证集成连接,如果出现问题,请将套件短路。考虑像
Try
Dim testContext As DBContext = New DBContext(_configuredConnectionString)
VerifySQLConnection(testContext)
Catch ex As Exception
Dim actionableError As String = String.Format(_VERIFY_SQL_CONNECTION_TEMPLATE, _configuredConnectionString)
Dim actionableException As New ConfigurationException(actionableError, ex)
'Throw actionableException
Assert.Inconclusive(actionableError)
End Try
如果连接失败,我不想让测试失败,我想断言整个套件是不确定的,因为实际测试从未运行过。
我注意到Assert.Inconclusive
缺少内部异常的重载。这迫使我要么失败所有测试,要么检查完全内部异常,要么将测试标记为不确定,但是从NUnit测试运行器窗口中丢失可操作的信息。
答案 0 :(得分:2)
NUnit的Inconclusive
结果旨在表示由于某些先决条件未得到满足而无法运行测试。异常发生的事实是内部实现的一部分 - 它是我们如何强制测试在此时停止运行 - 但是没有任何关于异常的性质暴露给用户。
Assert.Inconclusive
是提供此类不确定结果的手动方式。它绝对没有进行任何特定的测试,与Assert.Fail
的工作方式类似。如果你想进行某种测试,那就是"假设"您将使用Assume.That
方法生成结果。
在您的情况下,VerifySqlConnection
方法听起来像是您应该在至少一种测试方法中测试的方法,如果您无法做到,则会失败。对于依赖于已建立连接的其他测试,您可以使用类似于......的代码。
Assume.That(() => VerifySqlConnection(testContext), Throws.Nothing);
以上是C#语法...我将VB翻译留给您。 : - )