我正在使用 xUnit 来测试我的 C# 代码,并且我正在使用 Visual Studio Premium 2012。
在我的解决方案中,我有我正在测试的主要项目和包含我所有测试的第二个项目。我应该达到 100% 的代码覆盖率,但我的测试项目中有一些功能无法达到 100%。我可以将该项目排除在代码覆盖结果中吗?
或者......现在有没有人在您期望抛出异常的测试时如何将测试功能提高到 100%?以下是我尝试为应该引发异常的方法编写测试的一些方法,以及未涵盖的内容。MyBusinessLogic 有一个名为 GenerateNameLine 的函数,它接受 MyViewModel 类型的对象。如果 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.");
}
这个测试也通过了。但是代码覆盖率}
在 mycatch
永远不会被击中之前说正确的。
我不知道如何为获得 100% 的异常编写测试。我知道这并不重要,但在工作中 100% 的代码覆盖率是我们对完成的定义的一部分,所以我不知道在这里做什么。