0

我有以下情况,任何帮助将不胜感激。

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 expected = new 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() 会注意到新属性为 null

所以,我的问题是,是否有如下方法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?

}
4

1 回答 1

0

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

于 2013-12-04T06:56:40.857 回答