xUnitを使用してC#コードをテストし、Visual StudioPremium2012を使用しています。
私のソリューションには、テストしているメインプロジェクトと、すべてのテストを含む2番目のプロジェクトがあります。私は100%のコードカバレッジにあると思われますが、私のテストプロジェクトには、100%に到達できない機能がいくつかあります。そのプロジェクトをコードカバレッジ結果に表示されないようにすることはできますか?
または...例外がスローされることを期待しているテストがあるときに、テスト関数を100%にする方法はありますか?例外をスローするメソッドのテストを作成しようとした方法のいくつかと、カバーされていないものを次に示します。MyBusinessLogicには、MyViewModelタイプのオブジェクトを受け入れるGenerateNameLineという名前の関数があります。MyViewModelのNameプロパティが空の文字列の場合、RequiredInformationMissingExceptionタイプの例外をスローする必要があります。
[Fact]
public void TestMethod1()
{
var vm = new MyViewModel();
vm.Name = string.Empty;
Assert.Throws<RequiredInformationMissingException>(delegate { MyBusinessLogic.GenerateNameLine(vm); });
}
このテストは合格ですが、色が強調表示されたコードカバレッジはMyBusinessLogic.GenerateNameLine(vm);
、ヒットしていないことを示しています。
私も試しました:
[Fact]
public void TestMethod1
{
bool fRequiredInfoExceptionThrown = false;
var vm = new MyViewModel();
vm.Name = string.Empty;
try
{
MyBusinessLogic.GenerateNameLine(vm);
}
catch (Exception ex)
{
if (ex.GetType() == typeof(RequiredInformationMissingException))
fRequiredInfoExceptionThrown = true;
}
Assert.True(fRequiredInfoExceptionThrown, "RequiredInformationMissingException was not thrown.");
}
このテストも合格です。しかし、コードカバレッジは、}
私の直前にcatch
ヒットすることはないと言っています。
100%になる例外のテストを作成する方法がわかりません。私はそれが本当に重要ではないことを知っていますが、仕事では100%のコードカバレッジがdoneの定義の一部であるため、ここで何をすべきかわかりません。