NUnit を使用している場合は、次のことができます。
Assert.Throws<Exception>(() => { someObj.SomeMethod(1); });
ExpectedException
テストを属性で装飾することもできますが、テストしException
たいステートメントだけでなく、何かがスローされた場合にテストが合格します。
編集: MSTest を使用している場合、私の知る限り、属性を使用して例外を予期することしかできません。
[ExpectedException(typeof(Exception)]
public void TestMethod() { ... }
モックからより具体的な例外タイプをスローし、プレーンの代わりにそのタイプを期待することを検討する必要がありますException
。
NUnit 機能を複製する独自のメソッドを定義することもできます。
public static class ExceptionAssert
{
public static void Throws<T>(Action act) where T : Exception
{
try
{
act();
}
catch (T ex)
{
return;
}
catch (Exception ex)
{
Assert.Fail(string.Format("Unexpected exception of type {0} thrown", ex.GetType().Name));
}
Assert.Fail(string.Format("Expected exception of type {0}", typeof(T).Name));
}
}