У меня ниже тест для моего основного метода весенней загрузки.
Тест 2 раза пытается запустить приложение, что и ожидается.
Первый раз, когда он запускает приложение, он использует объект Mock, а второй раз запускает приложение, которое вызывает фактический bean.
У меня ReferenceDataService
есть @PostConstract
вызов метода, который вызывает вызов другого приложения, которое мне не нужно в моих тестах.
Другое дело, что MqConfiguration
пытается подключиться к очередям IBM, чего я также хотел бы избежать в моем тесте.
Обратите внимание, хотя я добавил @ComponentScan(excludeFilters...
в свой тестовый класс, это не исключает его.
Как мне в этом случае написать тест для моего основного метода?
@ActiveProfiles(profiles = {"test"})
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MainApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, properties = {
"camel.springboot.java-routes-include-pattern=**/NONE*"})
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, SecurityAutoConfiguration.class})
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = {MqConfiguration.class, ReferenceDataCache.class})})
public class MainApplicationTest {
@MockBean
private MqService mqService;
@MockBean
private ReferenceDataService referenceDataService;
@SpyBean
private ReferenceDataCache cacheSpy;
@Test
public void test() {
Mockito.when(referenceDataService.getCurrencies()).thenReturn(new HashMap<>());
Mockito.when(referenceDataService.getFrequencies()).thenReturn(null);
Mockito.when(referenceDataService.getDayCountTypes()).thenReturn(null);
Mockito.when(referenceDataService.getBusinessDayConverntions()).thenReturn(null);
Mockito.when(referenceDataService.getRateDefinations()).thenReturn(null);
Mockito.when(referenceDataService.getBusinessCalendar()).thenReturn(null);
Mockito.when(referenceDataService.getFinancingTypes()).thenReturn(null);
Mockito.when(referenceDataService.getStaffs()).thenReturn(null);
MainApplication.main(new String[]{});
}
}
MainApplication.java (тестируемый класс)
@SpringBootApplication
@EnableJms
@EnableCaching
@AutoConfigureBefore(JmsAutoConfiguration.class)
public class MainApplication {
private static final Logger logger = LoggerFactory.getLogger(MainApplication.class);
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
@SpringBootTest(classes = MainApplication.class
- person Jigar Naik   schedule 19.07.2019