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

  • Android Central

    Android Cent

    13 Kasım 2008
  • Kiddyzuzaa

    Kiddyzuzaa

    25 ŞUBAT 2014
  • Kontor.TV

    Kontor.TV

    14 Mart 2006