在测试期间,我有几个特定于项目的 Assert 辅助函数。例如,我必须经常检查两个 IEnumerables 是否相等(通过引用完全相同的内容,而不是关于顺序)。所以有一个静态类。例如:
internal static class MyAssert
{
public static void AreEquivalent<T>(IEnumerable<T> enumerable1, IEnumerable<T> enumerable2)
{
bool val = false;
if (enumerable2 == null)
{
val = !enumerable1.Any();
} else {
var list1 = enumerable1.ToList();
var list2 = enumerable2.ToList();
val = (list1.Count == list2.Count && list1.Intersect(list2).Count() == list2.Count());
}
Assert.IsTrue(val);
}
}
然后,如果我使用MyAssert.AreEquivalent(enumer1, enumer2);
,但它失败了,那么整个堆栈跟踪将显示在辅助函数中。我想错过它,所以如果开发人员来了,并且看到了 assert 的来源,他只看到 MyAssert 失败了,但他没有看到我的辅助函数内部的问题在哪里(他无法对Assert.IsTrue(val))
.
我知道它可以用 来完成Assert.IsTrue(MyCollHelper.AreEquivalent(enumer1, enumer2))
,但这不像以前那样可读。