Аргументы метода юнит-тестирования - PullRequest
0 голосов
/ 27 февраля 2020

Надеюсь, это выполнимо. Я хочу использовать Unit Testing для проверки параметров метода. Я хочу убедиться, что ноль не передается в качестве аргумента.

Код для тестирования

 public class TestParameter
 {
    public double divide(int dividend, int divisor)
    {
        double quotient = 0;

        if (divisor!=0)
        quotient= dividend / divisor;

        return quotient;
    }       
}

Модульный тест

[TestClass]
public class UnitTestIntro
{
    [TestMethod]
    public void ZeroDivision()
    {
        TestParameter test = new TestParameter();
        double ans = test.divide(10, 0);
        //Assert.IsTrue();
        //I want to assert that divide does not allow 0 divisor as an argument
    }
}

Ответы [ 2 ]

4 голосов
/ 27 февраля 2020

Я хочу использовать модульное тестирование для проверки параметров метода.

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

Это невозможно сделать с помощью модульного теста, для этого кода нет замены, которую можно вставить в модульный тест:

public double divide(int dividend, int divisor)
{
    if (divisor == 0) throw new ArgumentException("Cannot be 0", nameof(divisor));

    // ...
}

Вы можете управлять тем, что ваш модульный тест переходит к вашему методу, но вы не можете контролировать то, что другие пройдут, когда они его вызовут. Поэтому проверка должна проходить внутри самого метода, а не в ваших тестах.

2 голосов
/ 27 февраля 2020

Ответ на вопрос в заголовке

Модульное тестирование - это логическое c тестирование.

Аргументы метода тестирования не имеют смысла, потому что аргументы метода инструменты для построения собственной бизнес-логики c.

Вы не можете проверить аргументы.

Ответ на реальный вопрос

Вам необходимо проверить аргументы в вашем основном методе, например:

public class TestParameter
 {
    public double divide(int dividend, int divisor)
    {
        if (divisor == 0) // Validation
            throw new ArgumentException("Argument can't be '0'", nameof(divisor));

        return dividend / divisor;
    }       
}

Затем проверьте его в тесте:

[TestMethod]
public void ZeroDivision()
{
    TestParameter test = new TestParameter();
    Exception expectedException = null;
    try
    {
        double ans = test.divide(10, 0);
    }
    catch (System.Exception e)
    {
        expectedException = e;
    }
    Assert.IsNotNull(expectedException);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...