【问题标题】:Unit Test Coverage is being pedantic单元测试覆盖率正在迂腐
【发布时间】: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


【解决方案1】:

因为它是一个可以接受引用类型和值类型的泛型方法,所以它希望你同时测试它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 2023-04-07
    • 2014-05-04
    • 1970-01-01
    相关资源
    最近更新 更多