Должен ли я практиковать & ldquo; mockist & rdquo; или & ldquo; классическая & rdquo; TDD?

Вам не нужно явно ссылаться на std::cout или std::endl. Они оба включены в namespace std. using namespace std вместо использования оператора разрешения области видимости :: каждый раз делает проще и чище.

#include<iostream>
#include<string>
using namespace std;
37
задан Henrik Gustafsson 5 January 2009 в 08:51
поделиться

4 ответа

Я не думаю, что необходимо выбрать один по другому. У обоих есть их преимущества и недостатки, и оба - инструменты для Вашей панели инструментов. "Mockist" tdd делает Вас немного более гибкими в том, что можно протестировать, в то время как классический TDD делает тесты немного менее хрупкими, потому что они имеют тенденцию больше смотреть на входной/по сравнению с вывод вместо того, чтобы смотреть на фактическую реализацию. При выполнении mockist поблочного тестирования у меня, кажется, есть больше тестового повреждения при изменении реализации.

я пытаюсь использовать классический tdd каждый раз, когда возможный (хотя я часто использую платформу насмешки для установки тупиков быстро). Иногда я замечаю, что начинаю тестировать слишком много когда-то, или мне нужны слишком много объектов настроить тест. Именно тогда тестирование mockist может часто помогать Вам настроить меньшие тесты.

Это все довольно абстрактно, таким образом, я надеюсь, что имею смысл

38
ответ дан Mendelt 5 January 2009 в 08:51
поделиться

Я являюсь все еще относительно новым в TDD - но способ, которым я преподавался/представлялся к различиям, состоял в том, чтобы думать о нем с точки зрения тестирования интеграции между классами и так, чтобы Вы не зависели от живых данных. Например, если у меня есть класс, который в значительной степени автономен - не зависящий от других классов, которые я создал для проекта, и это не выходит в живую data/dev среду для входа (как DB или API к системе) тогда, я только использовал бы классические модульные тесты в чем-то как NUnit или JUnit - но когда я начинаю тестировать взаимодействие между созданными классами - именно тогда это может вернуться к реальности удобное для насмешки других пользовательских классов и/или вне взаимодействия - так, чтобы можно было выбрать и протестировать код текущих классов, не пытаясь упорно искать потенциальную ошибку в других классах, которые Вы называете.

2
ответ дан silverbugg 5 January 2009 в 08:51
поделиться

Вопрос о mockist или классическом tdd очень о том, какую часть Вашего приложения Вы тестируете. Если у Вас есть "стандартная" многоуровневая архитектура (как DDD, например), доменный слой обычно подходит для классического tdd, где Вы модульный тест путем установки объекта под тестом, назовите несколько методов и проверьте результат и/или состояние.

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

Мой совет состоит в том, чтобы пойти классик каждый раз, когда Вы можете и дразнить, когда Вы должны.

25
ответ дан si618 5 January 2009 в 08:51
поделиться

Вы можете посмотреть нашу книгу по адресу http://www.growing-object-orient-software.com/ . Он включает расширенный рабочий пример. В процессе написания мы обнаружили, что различие между состоянием и взаимодействием в значительной степени вводит в заблуждение и больше связано с подходом к объектно-ориентированному проектированию.

15
ответ дан 27 November 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: