在Visual Studio中使用Selenium。使用NUnit对我的测试用例进行排序。
我正在编写一个用两个if语句比较两个序列号的测试用例:
[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!");
//method for stopping test missing!
如果序列号不匹配,我希望能够中止其余测试序列。
是否存在“结束/停止测试”方法或可以在else
部分中输入的类似内容?
答案 0 :(得分:1)
我认为您有两种选择。
1)仅仅抛出一个异常(并导致测试失败)
引发异常将使单元测试失败。有许多不同类型的异常,但是基数只是Exception
。您可以检查可用的here不同类型的异常。尽可能尝试选择最能代表错误的异常(例如,错误的参数使用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
}
这会将测试标记为通过,但是意味着测试中的其余操作不会运行。但是,我会尽量不要这样做-除非您真的了解您为什么要这样做,否则您就可以开始通过测试,而不必知道测试通过的理由(即无需断言)
我希望对您有帮助
答案 1 :(得分:0)
如果您想尽早结束测试而不失败,只需使用return键即可。
PackageManagement\Install-Package : No match was found for the specified search criteria and module name 'CredentialManager'. Try Get-PSRepository to see all available registered module
repositories.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1809 char:21
+ ... $null = PackageManagement\Install-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exception
+ FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage
我通常会合理地这样做,因为某些条件可能需要其他主张,而其他条件可能不会。引发异常将使测试失败。这不会失败。
编辑:我只是注意到另一个回答者在回答的结尾提到了这一点。所以不要理我:)