gpt4 book ai didi

c# - 网络核心 : Code Generation for IEquatable/Equals for Comparing Two Class Models

转载 作者:太空宇宙 更新时间:2023-11-03 19:38:49 27 4
gpt4 key购买 nike

我们从 Entity Framework 搭建数据库来创建类模型。我们有 1000 多个类(class)。现在我们正在实现单元测试,以比较插入 Actual 类和 Expected 类的类。以下网站推荐以下方法来比较所有成员(member)。

我必须为我的 1000 多个类(class)都写这个吗?或者有没有办法在 Visual Studio 中使用自动代码生成来创建所有这些 IEquatable?也许用 T4?

https://grantwinney.com/how-to-compare-two-objects-testing-for-equality-in-c/

public class Person : IEquatable<Person> 
{
public string Name { get; set; }
public int Age { get; set; }

public bool Equals(Person other)
{
if (ReferenceEquals(other, null))
return false;

if (ReferenceEquals(this, other))
return true;

return Name.Equals(other.Name) && Age.Equals(other.Age);
}

https://learn.microsoft.com/en-us/visualstudio/modeling/code-generation-and-t4-text-templates?view=vs-2019

下面的 Teamwork Guy 回答很好,需要为 1000 多个类实现这种方法。

最佳答案

如果您只为测试断言实现 Equals,我会使用类似 FluentAssertions 的库做断言。各种BeEquivalentTo方法比较对象图并提供详细的错误消息(例如,预期年龄为 x 但实际为 y),这通常比您从实现自己的 Equals 方法中获得的结果更好。它集成了所有开箱即用的主要测试框架(mstest、nunit、xunit.net)。

关于c# - 网络核心 : Code Generation for IEquatable/Equals for Comparing Two Class Models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57417588/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com