Правильный подход к написанию Модульных тестов

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

Почему возникают такие вопросы? Потому что в примерах обычно тестируют что угодно, вот вообще всё. Для примера, вырезка из документации Microsoft:

    [Fact]
    public void IsPrime_InputIs1_ReturnFalse()
    {
        var primeService = new PrimeService();
        bool result = primeService.IsPrime(1);

        Assert.False(result, "1 should not be prime");
    }

Немного вводит в ступор название IsPrime_InputIs1_ReturnFalse. Почему false? Почему не true? А если у меня метод будет возвращать какой-то int? Мне делать uint.MaxValue количество тестов для проверки каждого результата? Я ведь могу сделать ещё тест, что бы проверять, больше ли возвращаемое значение метода Method определённого числа x или нет. А количество значений такого x так же примерно равно uint.MaxValue.

Для примера, есть сервис который из базы данных вытягивает список продуктов. Что мне тестировать в этом случае? Я ведь не могу тестировать вообще все допустимые варианты развития событий, потому что их бесчисленное множество.

Какой конечный результат тестов и как он должен влиять на программу? На уровне эндпоинтов стоит валидация запросов, не я ведь могу тестировать сервис закидывая туда запросы, которые должны были отвалидироваться? Как этот тест потому должен влиять на систему?

Как тестировать базу данных? Есть ли какие-то обобщённые практики кроме того, что создавать тестовую базу данных либо memory data collection?


Ответы (0 шт):