SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • tunez4you

    tunez4you

    20 EKİM 2008
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011