为什么这个单元测试如此“慢”

时间:2011-04-18 07:17:31

标签: c# unit-testing

我在想这个。我创建了一个Complex类,只是为了好玩(存储复杂数字)并习惯TDD。

我写了以下测试:

    [TestMethod]
    [TestCategory("COMPLEX_OPERATOR")]
    public void ComplexAdditionWorks()
    {
        var c1 = new Complex(1.5, 3.0);
        var c2 = new Complex(3.0, 2.5);

        var cOutcome = c1 + c2;

        var cExpected = new Complex(4.5, 5.5);

        Assert.AreEqual(cOutcome, cExpected);
    }

这是实施:

    public static Complex operator +(Complex c1, Complex c2)
    {
        return new Complex(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary);
    }

然而,该单元测试的运行时间相对较慢,为0.10秒。与减法运算符相比,这是一个巨大的差异:

  public static Complex operator -(Complex c1, Complex c2)
    {
        return new Complex(c1.Real - c2.Real, c1.Imaginary - c2.Imaginary);
    }

使用可比较的单元测试:

    [TestMethod]
    [TestCategory("COMPLEX_OPERATOR")]
    public void ComplexSubstractionWorks()
    {
        var c1 = new Complex(3.0, 2.5);
        var c2 = new Complex(1.0, 1.5);

        var cOutcome = c1 - c2;

        var cExpected = new Complex(2.0, 1.0);

        Assert.AreEqual(cOutcome, cExpected);
    }

但是这个速度非常快(单位测试说0.00秒)

为什么加法运算符/单元测试在这里很慢......

顺便说一句,我进行了20次这样的单元测试,看看它是不是只是打嗝或什么的。

1 个答案:

答案 0 :(得分:0)

好的,我已经发现了它是什么。

只是public void ComplexAdditionWorks()是第一个运行的测试。我以为它们会按照编程的顺序运行,但它按字母顺序排列。

R#将初始化时间添加到第一次测试中仍然很奇怪......