Я пишу интеграционный тестовый пример, используя testng для весеннего пакетного задания. В своем приложении я использую Google API для адреса и Mail Sender для отправки электронного письма. В моем случае интеграционного теста требуется время во время тестового запуска для соединения и в конце отправки исключения, которое выглядит уродливо и отнимает много времени.
Я пытался издеваться над бобами, но не знаю, как именно это сделать в интеграционном тестовом примере.
Google Api Code:
@Slf4j
public final class GoogleApiContext {
private static GeoApiContext context;
private GoogleApiContext() {
}
public static GeoApiContext getGeoApiContext(String apiKey, int maxQps) {
if (context == null) {
log.info("Creating google api context having key - {} and maxQps - {}", apiKey, maxQps);
context = new GeoApiContext.Builder().apiKey(apiKey).queryRateLimit(maxQps).build();
}
return context;
}
}
Mail Sender Code:
@Override
public Boolean sendMailWithAttachment(final MailBo mailBo, final String pathToAttachment, final String fileName) {
try {
log.info("Sending Email {}", mailBo);
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(mailBo.getTo());
helper.setSubject(mailBo.getSubject());
helper.setText(mailBo.getText());
File file = new File(pathToAttachment);
helper.addAttachment(fileName, file);
mailSender.send(message);
log.info("Mail sent successfully");
return true;
} catch (MessagingException e) {
log.info("Mail Exception {}", e);
return false;
}
}
Integration Test Case:
@SpringBootTest(
classes = {ApplicationLauncher.class, BatchConfiguration.class, BatchTestConfig.class})
public class PostalJobTest extends AbstractTestNGSpringContextTests {
@Autowired
private JobLauncherTestUtils jobLauncherTestUtils;
@Autowired
JobLauncher dataloadJobLauncher;
@Autowired
private Job postalJob;
@Test
public void testPostalJob_valid_response() throws Exception {
String fileName = getFileName(FileLocation.POSTAL_VALID, FileLocation.TEMP_POSTAL_VALID);
JobParametersBuilder jobParametersBuilder = getJobParametersBuilder(fileName);
jobLauncherTestUtils.setJob(postalJob);
jobLauncherTestUtils.setJobLauncher(dataloadJobLauncher);
JobExecution jobExecution =
jobLauncherTestUtils.launchJob(jobParametersBuilder.toJobParameters());
Assert.assertEquals(jobExecution.getStatus(), BatchStatus.STARTING);
Thread.sleep(2000);
while (jobExecution.isRunning()) {
}
Assert.assertEquals(jobExecution.getStatus(), BatchStatus.COMPLETED);
}
Я хочу издеваться над GeoApiContext и MailSender для теста интеграции и могу ли я создать фиктивный сервер для получения ответа, чтобы тест проходил быстрее без каких-либо исключений. Пожалуйста, помогите мне.