在我的应用程序中,我有两个等效的enum
s。一个位于 DAL 中,另一个位于服务契约层中。它们具有相同的名称(但位于不同的命名空间中),并且应该具有相同的成员和值。
我想编写一个单元测试来强制执行此操作。到目前为止,我已经得到以下内容:
public static class EnumAssert
{
public static void AreEquivalent(Type x, Type y)
{
// Enum.GetNames and Enum.GetValues return arrays sorted by value.
string[] xNames = Enum.GetNames(x);
string[] yNames = Enum.GetNames(y);
Assert.AreEqual(xNames.Length, yNames.Length);
for (int i = 0; i < xNames.Length; i++)
{
Assert.AreEqual(xNames[i], yNames[i]);
}
// TODO: How to validate that the values match?
}
}
这对于比较名称来说效果很好,但如何检查值是否也匹配?
(我使用的是 NUnit 2.4.6,但我认为这适用于任何单元测试框架)
枚举.GetValues http://msdn.microsoft.com/en-us/library/system.enum.getvalues.aspx:
var xValues = Enum.GetValues(x);
var yValues = Enum.GetValues(y);
for (int i = 0; i < xValues.Length; i++)
{
Assert.AreEqual((int)xValues.GetValue(i), (int)yValues.GetValue(i));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)