我认为你有几个选择。
1)简单地抛出一个异常(并且测试失败)
抛出异常将使单元测试失败。有很多不同类型的异常,但基础很简单Exception。您可以在此处查看可用的不同类型的异常。在可能的情况下,尝试选择最能代表错误的异常(例如使用错误的参数ArgumentException或其中的一些派生词)。
您的测试将如下所示:
[Test]
public void CompareVariables()
{
if (!string.Equals(serialNumberInfo, serialNumberReport))
throw new Exception($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
// The rest of your tests (only run if serialNumberInfo and serialNumberReport) are equal.
}
2)使用断言(并通过测试)
单元测试通常应该断言发生了一些令人满意的事情。如果那件事没有发生,那么应该抛出一个异常(通常由一些断言框架为您处理)。
所以你可以翻转测试来做到这一点:
[Test]
public void CompareVariables()
{
serialNumberInfo.ShouldBe(serialNumberReport);
// The rest of your tests (only run if serialNumberInfo and serialNumberReport) are equal.
}
这是用Shouldly完成的,但是有无数的断言框架,所以选择你最喜欢的。(mstest 内置了一个,但我发现它的可读性较差,但这是个人喜好)。
请注意,仅当您想明确确保它应该发生时才使用断言。即这需要我的测试通过,而不是如果发生这种情况然后中止。这很难解释,所以我希望这是有道理的?
出错时的例外情况,本应正确时的断言。
3)离开测试(并通过测试)
如果测试退出而没有抛出异常(手动或通过断言框架),则该测试被认为是通过测试。因此,如果您想将此视为通过,您可以简单地从测试中返回。
[Test]
public void CompareVariables()
{
if (string.Equals(serialNumberInfo, serialNumberReport))
{
Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} are a match! Proceed!");
}
else
{
Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
return;
}
// The rest of your tests
}
这会将测试标记为通过,但意味着测试中的其余操作不会运行。但是,我会尽量不这样做——除非你真的明白你为什么要这样做,因为你可以在不知道它们为什么通过的情况下开始通过测试(即不断言任何东西)
我希望这会有所帮助