我有以下情况,我们将不胜感激。
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?
}
答案 0 :(得分:0)
您的答案的最终问题是否定的,我们不支持验证是否所有属性都已经过测试。这将需要某种代理生成技术来跟踪对属性的访问。我必须承认这是一个有趣的想法,所以你可以在https://github.com/dennisdoomen/FluentAssertions/issues?state=open
上提出一个增强功能