NUnit顺序/组合问题

本文关键字:问题 组合 顺序 NUnit | 更新日期: 2023-09-27 18:06:00

我正在编写一些单元测试,并希望使用顺序标记,我已经找到了声明这种测试的语法。

[Test, Sequential]
    public void TestCalculations(
    [Values(10000, 15000, 20000, 25000, 50000)] int salary)
    {

    }

在做具有多个输入的顺序/组合测试时,断言是如何处理的?

祝福

NUnit顺序/组合问题

我自己没有使用这些属性,但是我希望编写实际的测试方法体,就像您为单个值编写一样。基本上每次只显示一个值,所以只需编写代码来测试该值。

根据文档,我认为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; });
}