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

本文关键字:单元测试 为什么 | 更新日期: 2023-09-27 17:50:30

我很好奇。我已经创建了一个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次,看看它是否只是一个小嗝嗝之类的。

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

好了,我知道是什么了。

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

r#将初始化时间添加到第一个测试中,这仍然很奇怪…