Почему этот юнит-тест такой "медленный" - PullRequest
3 голосов
/ 18 апреля 2011

Мне было интересно. Я создал класс 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 голосов
/ 18 апреля 2011

Хорошо, я выяснил, что это такое.

Просто public void ComplexAdditionWorks() - первый тест, который запускается. Я думал, что они будут работать в том порядке, в котором они были запрограммированы, но это по алфавиту.

Странно, что R # добавляет время инициализации к первому тесту ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...