Как проверить арифметические операции в c # - PullRequest
0 голосов
/ 25 июня 2019

Есть один вопрос по написанию юнит-тестов для расчетов. Существуют ли другие способы написания теста для метода Test. Написание такого модульного теста кажется мне бесполезным, потому что мы просто копируем логику для тестирования и сравниваем ее

public int TestMethod(bool flag)
{
    var result = default(int);
    var someConstant = 1400;

    if (flag)
    {
        result = (someConstant * 5) - 20;
    }
    else
    {
        result = someConstant - 50;
    }

    return result;
}


[Test]
public void TestMethod_ReturnsResult_WhenFlagIsTrue()
{
    var someConstant = 1400;
    var expctedResult = (someConstant * 5) - 20;

    var actualResult = TestMethod(true);

    Assert.IsTrue(expctedResult == actualResult);
}

1 Ответ

0 голосов
/ 25 июня 2019

Вы не должны копировать арифметические операции для проверки вашего метода.Это может привести к ошибкам.Лучше сохранить его как постоянный.

Если вы не хотите проверять арифметическую логику, извлеките эти арифметические операции снаружи и вставьте их внутрь через DI.Внутри ваших тестов вам нужно будет только проверить, какой из методов был вызван для данного флага.Например, вы можете сделать это легко с помощью Moq framework.

public int TestMethod(bool flag)
{
    const int someConstant = 1400;

    if (flag)
    {
        return someService.CalculateWhenTrue(someConstant);
    }
    else
    {
        return someService.CalculateWhenFalse(someConstant);
    }
}

Затем решите, стоит ли тестировать отдельные операции в этих методах.

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