为什么这个单元测试这么“慢”?
本文关键字:单元测试 为什么 | 更新日期: 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#将初始化时间添加到第一个测试中,这仍然很奇怪…