Я предполагаю, что вы, возможно, выполнили свой макет-код и, возможно, захотите простой интеграционный тест, чтобы убедиться, что ваш серверный вызов работает.
Одна из трудностей в тестировании потоков связана с их природой - они параллельны.Это означает, что вы вынуждены писать тестовый код JUnit, который вынужден ждать, пока ваш поток завершит свою работу, прежде чем тестировать результаты вашего кода.Это не очень хороший способ тестирования кода и может быть ненадежным, но обычно это означает, что у вас есть представление о том, работает ли ваш код.
Например, ваш код может выглядеть примерно так:
@Test
public void myIntegrationTest() throws Exception {
// Setup your test
// call your threading code
Results result = myServerClient.doThreadedCode();
// Wait for your code to complete
sleep(5);
// Test the results
assertEquals("some value",result.getSomeValue());
}
private void sleep(int seconds) {
try {
TimeUnit.SECONDS.sleep(seconds);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Мне действительно не нравится это делать, я предпочитаю издеваться и соглашаться с другими ответами.Но если вам нужно проверить свои темы, то это один из подходов, который я считаю работоспособным.