10 Mart 2009, Salı
Nasıl Junit zaman uyumsuz işlemler test etmek için
Nasıl ateş asenkron Junit ile işleyen yöntemler test musun?
Bilmiyorum nasıl benim test için bekleme süreci sonunda (tam olarak değil bir birim test, daha fazla gibi bir entegrasyon test olarak birkaç sınıfı içerir ve sadece bir tane)
CEVAP
2 Aralık 2009, ÇARŞAMBA
Alternatif CountDownLatch sınıf kullanmaktır.
public class DatabaseTest
{
/** Data limit */
private static int DATA_LIMIT = 5;
/** Countdown latch */
private CountDownLatch lock = new CountDownLatch(1);
/** Received data */
private List<Data> receiveddata;
@Test
public void testDataRetrieval() throws Exception
{
Database db = new MockDatabaseImpl();
db.getData(DATA_LIMIT, new DataCallback()
{
@Override
public void onSuccess(List<Data> data)
{
receiveddata = data;
lock.countDown();
}
});
lock.await(2000, TimeUnit.MILLISECONDS);
assertNotNull(receiveddata);
assertEquals(DATA_LIMIT, receiveddata.size());
}
}
NOTsadece kullanılan edemezsinsyncronizedbir kilit olarak düzenli bir nesne ile, hızlı geri kilit bekle yöntemi çağrılmadan önce kilidi serbest. Joe Walnes tarafından this blog yazısı bakın.
EDİTKaldırıldı @@CountDownLatch sayesinde yorumlardan jtahlborn Halka etrafında bloklar syncronized
Bunu Paylaş:
Nasıl test zaman uyumsuz API birim içi...
Nasıl benim sunucu uygulaması JUnit ku...
Zaman aşımı Hatası önlemek için nasıl ...
Nasıl özel yöntemleri, alanları veya i...
Nasıl terminalden Curl ile JSON veri g...