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

  • MofoHifi Records

    MofoHifi Rec

    15 HAZİRAN 2006
  • Study with Substance P

    Study with S

    31 Mayıs 2008
  • WPBeginner - WordPress Tutorials

    WPBeginner -

    17 Temmuz 2009