Microsoft.TestApi 对象比较无法识别枚举差异
Microsoft.TestApi Object Comparison not recognising enum differences
我正在尝试使用 Microsoft.TestApi 比较 2 个对象。问题是它没有发现枚举值之间的差异。
在下面的示例中,我希望测试通过,因为枚举值不同,但是 TestApi 比较 returns 没有不匹配。
如何让它检测枚举值差异?
代码
public class ObjectComparer
{
public bool AreDifferent(Holiday h1, Holiday h2)
{
var comparer = new ObjectGraphComparer();
var factory = new PublicPropertyObjectGraphFactory();
var sourceGraph = factory.CreateObjectGraph(h1);
var targetGraph = factory.CreateObjectGraph(h2);
IEnumerable<ObjectComparisonMismatch> result;
comparer.Compare(sourceGraph, targetGraph, out result);
return result.Any();
}
}
public class Holiday
{
public Day Day { get; set; }
}
public enum Day
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday
}
测试
[TestMethod]
public void ShouldDetectDifferentEnumValues()
{
var h1 = new Holiday {Day = Day.Monday};
var h2 = new Holiday {Day = Day.Tuesday};
var comparer = new ObjectComparer();
var result = comparer.AreDifferent(h1, h2);
Assert.IsTrue(result);
}
我已经复制了你的代码并对源代码进行了一些小的研究。我的朋友你运气不好,不比较枚举。
代码可以在codeplex上找到,相关部分是这个
// compare primitives, strings, datatimes, guids
if (leftNode.ObjectType.IsPrimitive ||
leftNode.ObjectType == typeof(string) ||
leftNode.ObjectType == typeof(DateTime) ||
leftNode.ObjectType == typeof(Guid))
我正在尝试使用 Microsoft.TestApi 比较 2 个对象。问题是它没有发现枚举值之间的差异。
在下面的示例中,我希望测试通过,因为枚举值不同,但是 TestApi 比较 returns 没有不匹配。
如何让它检测枚举值差异?
代码
public class ObjectComparer
{
public bool AreDifferent(Holiday h1, Holiday h2)
{
var comparer = new ObjectGraphComparer();
var factory = new PublicPropertyObjectGraphFactory();
var sourceGraph = factory.CreateObjectGraph(h1);
var targetGraph = factory.CreateObjectGraph(h2);
IEnumerable<ObjectComparisonMismatch> result;
comparer.Compare(sourceGraph, targetGraph, out result);
return result.Any();
}
}
public class Holiday
{
public Day Day { get; set; }
}
public enum Day
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday
}
测试
[TestMethod]
public void ShouldDetectDifferentEnumValues()
{
var h1 = new Holiday {Day = Day.Monday};
var h2 = new Holiday {Day = Day.Tuesday};
var comparer = new ObjectComparer();
var result = comparer.AreDifferent(h1, h2);
Assert.IsTrue(result);
}
我已经复制了你的代码并对源代码进行了一些小的研究。我的朋友你运气不好,不比较枚举。
代码可以在codeplex上找到,相关部分是这个
// compare primitives, strings, datatimes, guids
if (leftNode.ObjectType.IsPrimitive ||
leftNode.ObjectType == typeof(string) ||
leftNode.ObjectType == typeof(DateTime) ||
leftNode.ObjectType == typeof(Guid))