我在想这个。我创建了一个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次这样的单元测试,看看它是不是只是打嗝或什么的。
答案 0 :(得分:0)
好的,我已经发现了它是什么。
只是public void ComplexAdditionWorks()
是第一个运行的测试。我以为它们会按照编程的顺序运行,但它按字母顺序排列。
R#将初始化时间添加到第一次测试中仍然很奇怪......