bir bahar @Async boşluk hizmeti yöntemi JUnit-test:Bir Bahar hizmeti
@Service
@Transactional
public class SomeService {
@Async
public void asyncMethod(Foo foo) {
// processing takes significant time
}
}
Ve bu SomeService
için bir entegrasyon test var: Burada
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@IntegrationTest
@Transactional
public class SomeServiceIntTest {
@Inject
private SomeService someService;
@Test
public void testAsyncMethod() {
Foo testData = prepareTestData();
someService.asyncMethod(testData);
verifyResults();
}
// verifyResult() with assertions, etc.
}
sorundur:
SomeService.asyncMethod(..)
olarak
@Async
ve ile açıklamalı
testAsyncMethod
iplik daha sonra doğrudan önceki çalışan iş parçacığı çalışmalarını tamamladığında muhtemelen önceverifyResults()
yürütme devam kendi işçi iş parçacığı içine çağrısomeService.asyncMethod(testData)
çatal olacak
SpringJUnit4ClassRunner
olarak
@Async
semantik uyar.
nasıl sonuçlarının doğrulanması önce someService.asyncMethod(testData)
'ın tamamlanması için bekleyebilir? How do I write a unit test to verify async behavior using Spring 4 and annotations? çözümleri someService.asyncMethod(testData)
getiri void
değil, bir Future<?>
olarak, burada geçerli değildir dikkat edin.