NUnit顺序/组合问题
本文关键字:问题 组合 顺序 NUnit | 更新日期: 2023-09-27 18:06:00
我正在编写一些单元测试,并希望使用顺序标记,我已经找到了声明这种测试的语法。
[Test, Sequential]
public void TestCalculations(
[Values(10000, 15000, 20000, 25000, 50000)] int salary)
{
}
在做具有多个输入的顺序/组合测试时,断言是如何处理的?
祝福
我自己没有使用这些属性,但是我希望编写实际的测试方法体,就像您为单个值编写一样。基本上每次只显示一个值,所以只需编写代码来测试该值。
根据文档,我认为Sequential
对您的示例没有意义,因为您只有一个参数。当你有多个参数时,它是有意义的,基本上说一个参数的第一个值应该与另一个参数的第一个值配对,然后是每个参数的第二个值,而不是每个可能的对都被执行。您可以使用它来给出输入和期望的输出,例如:
[Test, Sequential]
public void TestDivisionBy2(
[Values(10, 25, 40)] int input,
[Values(5, 12, 20)] int expectedOutput)
{
Assert.AreEqual(expectedOutput, input / 2);
}
在某些情况下TestCase属性可能是有用的,它提供了内置的特性Result
:
[TestCase(12,3, Result=4)]
[TestCase(12,2, Result=6)]
[TestCase(12,4, Result=3)]
public int DivideTest(int n, int d)
{
return( n / d );
}
如果您不期望任何特定的结果值,只是想确保测试在不同的输入值下工作良好-您也可以这样做:
[TestCase(120000, -1)]
[TestCase(Int32.MinValue, Int32.MaxValue)]
[TestCase(-1, 23333)]
public void ShouldHandleWrongRangeValues(int n, int d)
{
Assert.DoesNotThrow(() => { var someIntermediateValue = n * d; });
}