【问题标题】:Is there a testing technique to verify all properties have been tested是否有一种测试技术来验证所有属性都已经过测试
【发布时间】:2013-12-19 17:38:24
【问题描述】:

我有以下情况,不胜感激。

public class Poco
{
  public string SomeData { get;set; }
  public string SomeMoreData { get;set; }
}

public class Worker
{
     public Poco DoWork()
     {
         // do stuff
     }
}

测试方法 A.......

[Test]
public static void TestPocoIsPopulated()
{
    var objUt = new Worker();
    var actual = objUt.DoWork();       
    var expected = new Poco { SomeData = "reusltOne", SomeMoreData = "resultTwo" };

    actual.ShouldBeEquivalentTo(expected);

}

这很好用。但是,随着嵌套类的较大测试,使用 ShouldBeEquivalentTo() 变得很麻烦,我希望能够按如下方式执行此操作...

编辑:同样使用方法 A 你不能这样做.... var 预期 = 新 Poco { SomeData = [NOT_NULL] , SomeMoreData = "resultTwo" };

测试方法 B.......

[Test]
public static void TestPocoIsPopulated()
{
    var objUt = new Worker();
    var actual = objUt.DoWork();    

    actual.SomeData.Should().Be("resultOne");
    actual.SomeMoreData.Should().Be("resultTwo");
}

但是,如果我向 Poco 添加一个新属性,那么测试方法 B 不会抱怨,并且该属性可能不会得到测试。但是,使用方法 A,测试将失败,因为 ShouldBeEquivalentTo() 会注意到新属性为空

所以,我的问题是,有没有如下方法C。

测试方法C............

[Test]
public static void TestPocoIsPopulated()
{
    var objUt = new Worker();
    var actual = objUt.DoWork();    

    actual.SomeData.Should().Be("resultOne");
    actual.SomeMoreData.Should().Be("resultTwo");

    actual.Should().HaveAllPropertiesBeenTested().EqualTo(true); // <-------- is this possible?

}

【问题讨论】:

  • ShouldBeEquivalentTo 到底有什么问题?它专门满足您的要求。
  • 例如,您不能在 ShouldBeEquivalentTo 中使用 Should().BeGreaterThan(1)(参见上面的编辑)
  • 是的,你可以。只需使用选项对象上的 Using() 方法之一来覆盖特定属性的断言。见github.com/dennisdoomen/fluentassertions/wiki/…

标签: c# unit-testing fluent-assertions


【解决方案1】:

您的答案的最终问题是否定的,我们不支持验证是否所有属性都经过测试。这将需要某种代理生成技术来跟踪对属性的访问。我必须承认这是一个有趣的想法,所以你可以在 https://github.com/dennisdoomen/FluentAssertions/issues?state=open 上提出改进

【讨论】:

  • 感谢您的回复。
猜你喜欢
  • 2019-04-04
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 2017-01-31
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
相关资源
最近更新 更多