C# 更新到最新FluentAssertions会破坏我的单元测试

C# 更新到最新FluentAssertions会破坏我的单元测试,c#,fluent-assertions,C#,Fluent Assertions,我试图用最新版本的FluentAssertions(4.0.1)更新我的Unittest项目,但由于API的更改,我的测试不再编译。在更新之前,我使用的是3.4.1版本,下面的代码编译成功并运行良好 测试序列化和反序列化类的和实例,然后使用FluentAssertions比较这两个对象,并使用设置排除使用IgnoreDataMemberAttribute修饰的属性 var item = this.fixture.Create<CustomClass>(); var readObjec

我试图用最新版本的FluentAssertions(4.0.1)更新我的Unittest项目,但由于API的更改,我的测试不再编译。在更新之前,我使用的是3.4.1版本,下面的代码编译成功并运行良好

测试序列化和反序列化类的和实例,然后使用FluentAssertions比较这两个对象,并使用设置排除使用
IgnoreDataMemberAttribute
修饰的属性

var item = this.fixture.Create<CustomClass>();
var readObject = TestHelper.SerializeAndDeserializeObject(item);

readObject.ShouldBeEquivalentTo(item,
  options => options.Excluding(
    p => p.PropertyInfo.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), true).Length != 0));
var item=this.fixture.Create();
var readObject=TestHelper.SerializeAndDeserializeObject(项);
readObject.应与(项目,
选项=>选项。不包括(
p=>p.PropertyInfo.GetCustomAttributes(typeof(IgnoreDataMemberAttribute),true).Length!=0);
因此,
PropertyInfo
不再存在,我必须使用
ISubjectInfo
,但上面提供的属性(
SelectedMemberInfo
等)都不能帮助我将测试运行为绿色


我现在的问题是,如何更新我的测试代码,使其与FluentAssertions 4.0.1一起工作?

在我们热情支持这两个字段以及属性并简化等效API的过程中,我们意外地删除了该选项。我需要想一种方法重新添加它。

为了支持这两个领域以及属性并简化等效API,我们无意中删除了该选项。我需要想办法重新添加它。

我用以下代码修复了我的单元测试。现在他们又回到了绿色

readObject.ShouldBeEquivalentTo(item, 
  options => options.Excluding(
    p => p.SelectedMemberInfo.DeclaringType.GetProperty(p.SelectedMemberInfo.Name).GetCustomAttributes(typeof(IgnoreDataMemberAttribute), true).Length != 0));

我已经用下面的代码修复了我的单元测试。现在他们又回到了绿色

readObject.ShouldBeEquivalentTo(item, 
  options => options.Excluding(
    p => p.SelectedMemberInfo.DeclaringType.GetProperty(p.SelectedMemberInfo.Name).GetCustomAttributes(typeof(IgnoreDataMemberAttribute), true).Length != 0));

在我看来,作为一个评论会更合适,但如果你稍后在回答中添加更多内容,例如,我会说这是一个合理的回答,我已经设法解决了我的问题。明天我会发布我的解决方案。也许你可以检查它是否有效。在我看来,作为一个评论会更合适,但如果你稍后在你的答案中添加更多内容,例如,我会说这是一个合理的答案,我已经设法解决了我的问题。明天我会发布我的解决方案。也许你可以检查它是否有效。那会有效,但有点难看。“我需要想一个办法让4.0消除了这种可能性。”DennisDoomen说。我在最新版本的FluentAssertions中看到了类似于
NotBeDecoratedWith
的内容,用于检查某个东西是否没有使用指定的属性进行修饰。这对我的处境没有帮助吗?没有。因为现在缺少的是从
ISubjectInfo
获取
PropertyInfo
的API。我自己一直在努力解决这个问题……首先,花了几个小时确定PropertyInfo扩展不再可用(可能应该更新文档??)但是我似乎也找不到SelectedMemberInfo扩展名。这可以工作,但有点难看。“我需要想一个办法让4.0消除了这种可能性。”DennisDoomen说。我在最新版本的FluentAssertions中看到了类似于
NotBeDecoratedWith
的内容,用于检查某个东西是否没有使用指定的属性进行修饰。这对我的处境没有帮助吗?没有。因为现在缺少的是从
ISubjectInfo
获取
PropertyInfo
的API。我自己一直在努力解决这个问题……首先,花了几个小时确定PropertyInfo扩展不再可用(可能应该更新文档??),但我似乎也找不到SelectedMemberInfo扩展。