例外がスローされることを期待するユニットテスト

こう書くと Assert.Fail が実行されなくてカバレッジが低下する。

Hoge hoge = new Hoge();
try
{
    hoge.Fuga();
    Assert.Fail();
}
catch (InvalidOperationException)
{
}

そこでこう書く

bool wasThrown = false;
Hoge hoge = new Hoge();
try
{
    hoge.Fuga();
}
catch (InvalidOperationException)
{
    wasThrown = true;
}
Assert.That(wasThrown, Is.True);

ExpectedExceptionAttribute は例外の発生場所を限定できないからあまり使わない。