Экземпляр класса для тестирования в тестовом классе в Java

Как лучше всего получить экземпляр класса для тестирования в тестовом классе?
Лучше ли создавать экземпляр вручную с помощью

ClassToBeTested classToBeTested = new ClassToBeTested();

внутри тестового класса

ИЛИ

получить его из контекста Spring, например:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {

  @Autowired
  MyService service;
...

}

Есть ли у него зависимости? Если да, то второе дело предоставит их вам. Если нет, или вы готовы предоставить их сами, любой из них будет работать.

jonrsharpe 28.06.2019 22:03

Я ценю быстрое принятие, рад, что вы нашли ответ полезным.

GhostCat 29.06.2019 05:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В программировании есть простое правило, которое поможет решить такие вопросы:

вы делаете что-то не потому, что можете, а потому, что это имеет смысл.

Значение: вы всегда стремитесь написать максимально минималистичный, упрощенный код, решающий вашу проблему.

Так когда

ClassToBeTested classToBeTested = new ClassToBeTested();

достаточно для вашего тестового примера и дает вам все необходимое для написания хорошего теста, затем вы используете его.

Если вам нужно что-то, что вы получаете «более простым» из этого подхода DI на основе аннотаций, тогда вы используете этот подход.

Сказав это, есть также условности. Когда "типичная" вещь, которую сделали бы большинство программистов... это использование аннотационного подхода, тогда это то, что вы должны использовать.

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

использование «нового» может быть проблематичным в будущем, но автоматическое подключение может спасти вас

Другие вопросы по теме