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

  • gsipek

    gsipek

    20 Temmuz 2007
  • MrExcite96

    MrExcite96

    17 ŞUBAT 2011
  • SegaAmerica

    SegaAmerica

    5 Mart 2008