哪种MSTest Assert.AreEqual方法首选?

时间:2017-06-27 19:51:30

标签: c# mstest

编写单元测试断言的推荐方法是什么?通用和非通用版本都通过,但我担心不必要的装箱,性能和准确性。我想创建一个编码标准的一般规则,所以我可以推荐这样做。

    [TestMethod]
    public void TestMethod1()
    {
        Visibility hidden = Visibility.Hidden;

        Assert.AreEqual(Visibility.Hidden, hidden);

        Assert.AreEqual<Visibility>(Visibility.Hidden, hidden);
    }

2 个答案:

答案 0 :(得分:4)

这些方法调用相同,只是用不同的方式编写。 Visibility类型参数是从参数类型推断出来的。

当可以推断出类型时,典型的风格是不包括它。

答案 1 :(得分:0)

我将额外增加0.02美元:

正如其他人所说,在这种情况下,两者是相同的,因为第一次调用(没有类型参数)仍然由于类型推断而编译为相同的方法。考虑到这一点,较不详细的代码将是首选。

但是假设由于某种原因,第一个调用实际上转到了需要(object, object)的非泛型版本。事实证明,两者的行为完全相同。假设(object, object)的性能可能比通用形式略差(反之亦然 - 直到你测试它才知道?)。但由于单元测试的性能很少是实际考虑因素,因此这种担忧没有实际意义。删除性能和行为作为考虑只留下一个考虑因素 - 可读性。

第一个比第二个更具可读性(更少冗余,更简洁,对可读性没有负面影响)。因此,第一个应该优先于第二个,总是。