0

Visual Studio ユニット テスト ケースを使用しています。テスト中のメソッドから Argument Exception が予想されるユニット テスト ケースを作成しましたMethodUnderTest。テスト ケースの他の部分 (セットアップ部分) が予期される例外をスローしたArgumentException場合、テスト ケースが失敗するように強制したいとします。instance.MethodUnderTest();セットアップが正しく、コード行がスローされる場合にのみ合格する必要がありますArgumentException

を使用して達成できますtry catchが、これを達成するためのより良い方法があるか知りたいです。

[ExpectedException(typeof(ArgumentException))]
public void TestCaseMethod()
{        
    // Set up
    Mock<ITestClass> testM = new Mock<ITestClass>();
    AnimalClass instance = new AnimalClass(testM.Object);

    // call the method under test
    instance.MethodUnderTest();
}
4

2 に答える 2

-1

組み込みの方法はわかりませんが、アサート例外でメソッドをラップできます

private void AssertException<T>(Action method)
    where T : Exception
{
    try
    {
        method();
        Assert.Fail();
    }
    catch (T e)
    {
        Assert.IsTrue(true);
    }
}

次に、で呼び出します

[TestMethod]
public void TestCaseMethod()
{        
    // Set up
    Mock<ITestClass> testM = new Mock<ITestClass>();
    AnimalClass instance = new AnimalClass(testM.Object);

    // call the method under test
    AssertException<ArgumentException>(instance.MethodUnderTest)
}

または、メソッドがパラメーターを受け取るか、値を返す場合

AssertException<MyException>(() => instance.ParameterisedFunction(a, b));
于 2016-06-28T13:07:31.783 に答える