【发布时间】:2014-04-25 01:11:31
【问题描述】:
我正在使用 Visual Studio 2012 中的 分析代码覆盖率 工具。该报告似乎对所涵盖的内容非常迂腐,我不知道还能做些什么来提供更多的报道。
我正在测试的代码是这样的:
public class Factory<T> : IFactory<T> where T : new()
{
public T Create()
{
return new T(); // This line has only partial coverage.
}
}
单元测试:
using System;
using Xunit;
public class Factory_Tests
{
[Fact]
public void Constructor_Works()
{
var target = new Factory<Exception>();
}
[Fact]
public void Create_ReturnsNewValue()
{
var target = new Factory<Exception>();
var actual = target.Create();
Assert.NotNull(actual);
}
}
该报告声称上面评论的行仅涵盖部分内容。在这条线上我可能无法测试什么?
【问题讨论】:
-
我猜由于它是通用的,你没有用所有允许的类型测试它——即您使用了引用类型,也许它也希望您使用值类型。
-
我不懂C#,但是简单检查一个方法是否不返回null不是很没用吗?
-
@MattSmith,是的,你明白了。谢谢!
-
@NiklasB.,如果该方法保证它返回一个值并且返回 null 会在其他地方导致 NullReferenceException,则不会。是的,这是对一段非常平凡的代码的非常平凡的测试。这是一个不懒惰的个人练习。
-
@Hand-E-Food 好的,但您不会在某处测试所创建对象的 功能 吗?那肯定也会抓住 NPE :) 无论如何,这对这个问题并不重要
标签: c# unit-testing visual-studio-2012 test-coverage