检查两种类型是否相等
本文关键字:是否 类型 两种 检查 | 更新日期: 2023-09-27 18:19:17
为了单元测试的目的,我们想检查一个类的实现是否已经改变。要检查的类主要包含在整个应用程序中使用的常量或静态字段。类似于语言文件。
我们的想法是,当这样一个类的实现发生变化时,通过将其与最后接受的实现版本进行比较,从失败的单元测试中获得通知。我的意思是,当发生更改时,这个类由团队成员手动审查和接受(或拒绝)。
现在,实际的问题是:如何比较两个类是否相等?编辑
这类的两个例子:
public class A
{
private string _value;
private A(string value)
{
_value = value;
}
public static readonly A Foo = new A("foo");
public static readonly A Bar = new A("bar");
}
public static class B
{
public const string Foo = "foo";
public const string Bar = "bar";
}
@Dio F -我不确定这是否是你所追求的。但是你可以通过反射检查静态属性的值。例如,如果我要用你的例子:
var typeA = typeof(A);
var staticFieldsA = typeA.GetFields(BindingFlags.Static | BindingFlags.Public);
var typeB = typeof(B);
var staticFieldsB = typeB.GetFields(BindingFlags.Static | BindingFlags.Public);
var fooAField = staticFieldsA.Where(f => f.Name == "Foo").Single();
var fooBField = staticFieldsB.Where(f => f.Name == "Foo").Single();
var fooAValue = fooAField.GetValue(null);
var fooBValue = fooBField.GetValue(null);
// fail
Assert.AreEqual(fooAValue, fooBValue);
所以不管实现如何(const, public static field),你都可以检查值