Я использую Mockito в @Mock
и @InjectMocks
аннотаций впрыснуть зависимости в частные поля, которые помечаются в Spring @Autowired
:Mockito: Вводим реальные объекты в частные @Autowired полого
@RunWith(MockitoJUnitRunner.class)
public class DemoTest {
@Mock
private SomeService service;
@InjectMocks
private Demo demo;
/* ... */
}
и
public class Demo {
@Autowired
private SomeService service;
/* ... */
}
Теперь я хотел бы также ввести real объектов в частные @Autowired
полей (без сеттеров). Возможно ли это или есть механизм, ограниченный только инъекцией Mocks?
Обычно, когда вы насмехаетесь над вещами, это означает, что вы не очень заботитесь о конкретном объекте; что вы действительно заботитесь только о поведении осмеянного объекта. Возможно, вы хотите сделать интеграционный тест? Или, не могли бы вы объяснить, почему вы хотите, чтобы издевались и бетонные объекты жили вместе? – Makoto
Ну, я имею дело с устаревшим кодом, и потребуется много времени (...). ThenReturn (...) для настройки макета только для предотвращения некоторых NPE и т. П. С другой стороны, реальный объект можно было бы безопасно использовать для этого. Поэтому было бы очень удобно иметь возможность вводить реальные объекты вместе с mocks. Даже если это может быть запах кода, я считаю это разумным в этом конкретном случае. – user2286693
Не забывайте 'MockitoAnnotations.initMocks (this);' в методе '@ Before'. Я знаю, что это напрямую не связано с исходным вопросом, но для тех, кто придет позже, это нужно добавить, чтобы сделать это возможным. – Cuga