5

2 や 4 のような戻り値を期待するたびに、この値を単体テスト メソッドのパラメーターとして渡したいと思います。しかし、パラメーターが正しくないという例外が発生します。countExpected パラメータを削除すると、単体テストは正常に実行されますが、countExpected をアサートできません...

このシナリオは NUnit でまったく可能ですか?

[Test, TestCaseSource("VisibleWeekDays")]
public void Test(DayOfWeek[] visibleWeekDaysSetup, int countExpected)
{
    // ARRANGE

    // ACT

    // ASSERT
    Assert.That(periods.Count(),Is.EqualTo(countExpected));
}

private static IEnumerable<TestCaseData> VisibleWeekDays
{
    get
    {
        yield return new TestCaseData(new DayOfWeek[] {DayOfWeek.Sunday}).Returns(2);
        yield return new TestCaseData(new DayOfWeek[] {DayOfWeek.Sunday, DayOfWeek.Monday}).Returns(4);
        // more days...
    }
}
4

1 に答える 1

8

ここで説明を参照してください:

.Returns
メソッドから返されると予想される結果であり、互換性のある戻り値の型を持っている必要があります。

したがって、 を使用する場合TestCaseData.Returns()は、次のように test を記述する必要があります。

[Test, TestCaseSource("VisibleWeekDays")]
public int Test(DayOfWeek[] visibleWeekDaysSetup)
{
     // ARRANGE

    // ACT

    // ASSERT
    return periods.Count();
}

更新:
期待値をパラメーターとして渡したい場合は、通常のテスト ケース データとして渡す必要があります。例を参照してください:

[Test, TestCaseSource("VisibleWeekDays")]
public void Test(DayOfWeek[] visibleWeekDaysSetup, int countExpected)
{
    ...

    Assert.That(periods.Count(),Is.EqualTo(countExpected));
}

private static IEnumerable<TestCaseData> VisibleWeekDays
{
    get
    {
        yield return new TestCaseData(new DayOfWeek[] {DayOfWeek.Sunday}, 2);
        yield return new TestCaseData(new DayOfWeek[] {DayOfWeek.Sunday, DayOfWeek.Monday}, 4);
        // more days...
    }
}
于 2013-03-20T20:52:57.983 に答える