Мне нужно немного поучаствовать в этом вопросе, потому что я не могу хорошо его защищать из-за недостатка опыта. Здесь дело, я концептуально понимаю различия между модульным тестированием и интеграционным тестированием. При уделении особого внимания методам персистентности и репозиторию, модульный тест будет использовать макет, возможно, через среду, подобную Moq, чтобы утверждать, что, скажем, искомый порядок был возвращен, как и ожидалось.
Допустим, я построил следующий модульный тест:
[TestMethod]
public void GetOrderByIDTest()
{
//Uses Moq for dependency for getting order to make sure
//ID I set up in 'Arrange' is same one returned to test in 'Assertion'
}
Поэтому, если я настрою OrderIdExpected = 5
и мой фиктивный объект вернется 5
в качестве идентификатора, мой тест пройдет. Я понял Я протестировал код, чтобы убедиться, что преформы моего кода возвращают ожидаемый объект и идентификатор, а не что-то еще.
Аргумент, который я получу, таков:
«Почему бы просто не пропустить модульные тесты и выполнить интеграционные тесты? Важно протестировать хранимую процедуру базы данных и ваш код вместе. Это кажется слишком большой дополнительной работой, чтобы проводить модульные тесты и интеграционные тесты, когда в конечном итоге я хочу знать, вызывает ли база данных вызовы». и код работает. Я знаю, что тесты занимают больше времени, но они должны выполняться и тестироваться независимо, поэтому мне кажется бессмысленным иметь оба варианта. Просто проверяйте, что имеет значение ».
Я мог бы защитить его с помощью определения из учебника, например: «Ну, это интеграционный тест, и нам нужно тестировать код отдельно как модульный тест, и, да, яда, яда ...» Это тот случай, когда пуристское объяснение практики против реальности теряется. Иногда я сталкиваюсь с этим, и если я не могу отстоять обоснование кода модульного тестирования, которое в конечном итоге опирается на внешние зависимости, то я не могу доказать это.
Любая помощь по этому вопросу с благодарностью, спасибо!