Весенние тесты - PullRequest
       10

Весенние тесты

0 голосов
/ 14 февраля 2019

Прочитайте несколько блогов о тестировании весенней партии и настройте тест соответственно (см. Ниже).Тест завершен.Однако у меня есть два вопроса:

  1. Как я могу быть уверен, что утверждение статуса работы не слишком рано?Работа начинается асинхронно.Возможно, он еще не готов, когда начнется утверждение.
  2. После того, как работа завершена, я хотел бы сделать некоторые утверждения.Однако клиент (т.е. тест) и сервер работают в двух разных потоках.Если я правильно понимаю, то мне придется запросить через JdbcTemplate или реализовать возможность запроса на сервере, например, через rest (что тогда будет производительным кодом).Это верно?Есть ли другие возможности?

Тестовый код:

@SpringBootTest
@RunWith(SpringRunner.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class FooJobTest {

  @Inject
  private Job fooBatchJob;

  @Inject
  private JobLauncher jobLauncher;

  private JobLauncherTestUtils jobLauncherTestUtils;

  @Before
  public void setUp() {
    jobLauncherTestUtils = new JobLauncherTestUtils();
    jobLauncherTestUtils.setJob(fooBatchJob);
    jobLauncherTestUtils.setJobLauncher(jobLauncher);
  }

  @Test
  public void testFooJob() {
    final JobExecution jobExecution = jobLauncherTestUtils.launchJob();

    assertThat(jobExecution.getStatus()).isEqualTo(BatchStatus.COMPLETED);

    // would like to query the database
  }
}

1 Ответ

0 голосов
/ 14 февраля 2019

Чтобы ответить на ваши вопросы:

  1. Как я могу быть уверен, что утверждение статуса работы не слишком рано? - JobLauncher использует TaskExecutor васнастроили, которая по умолчанию является синхронной.При этом, если вы используете какую-либо из асинхронных реализаций TaskExecutor, вам придется опросить результаты (или добавить JobExecutionListener, чтобы предупредить, что оно завершено).
  2. После того, как работа завершена, как я могу запросить базу данных, чтобы сделать утверждения? - я бы просто использовал JdbcTemplate для запроса и проверки ваших данных.Добавление API REST в ваше серверное приложение только для использования в тестах, вероятно, является плохой идеей.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...