Есть ли причина в Junit не создавать ваши объекты при объявлении? - PullRequest
2 голосов
/ 08 июля 2010

Есть ли причина помещать создание объекта в setUp(), а не в объявление переменной экземпляра?

Я видел, как это было сделано в книгах, но эффект тот же, и я не уверен, что это было сделано из соображений лучшей практики, потому что более ранняя версия Junit не создавала объект для каждого теста ( см. Здесь ), или, если это просто стиль.

1 Ответ

3 голосов
/ 08 июля 2010

Если создание объекта, о котором идет речь, не зависит от внешних факторов, вполне нормально объявить и определить его сразу. Однако часто это зависит от других факторов (например, инициализация синглтона *) или требует параметров конструктора - некоторые из которых могут даже зависеть от теста - или его инициализация выполняется в несколько этапов. Затем вы должны отложить создание экземпляра для метода настройки или даже для самого метода тестирования.

Обратите внимание, что JUnit создает новый экземпляр класса теста, таким образом, новый экземпляр его элементов данных для каждого выполнения метода теста в любом случае. Поэтому, если у вас нет ни одной из упомянутых выше зависимостей, семантически нет разницы между созданием экземпляра члена в точке объявления или в методе установки.

* это одна из причин, по которой синглтоны не нравятся. Тем не менее, часто они все еще есть, особенно в устаревшем коде.

...