使用Algolia Android客户端进行单元测试时出现死锁

使用Algolia Android客户端进行单元测试时出现死锁,android,unit-testing,testing,junit,algolia,Android,Unit Testing,Testing,Junit,Algolia,我试图在JUnit测试中使用algolia中的searchAsync,但由于没有返回搜索结果,它以死锁告终。这是我的密码: final Index index = AlgoClient.initIndex("contacts"); Query query = new Query(); query.setHitsPerPage(100); CountDownLatch signal = new CountDownLatch(1); index.sea

我试图在JUnit测试中使用algolia中的
searchAsync
,但由于没有返回搜索结果,它以死锁告终。这是我的密码:

    final Index index = AlgoClient.initIndex("contacts");

    Query query = new Query();

    query.setHitsPerPage(100);

    CountDownLatch signal = new CountDownLatch(1);

    index.searchAsync(query, new CompletionHandler() {

        @Override
        public void requestCompleted(JSONObject content, AlgoliaException e) {

           signal.countDown();
        });

    signal.await();

您需要使用带有超时的wait,如果它超时,则会失败。此外,您还应该测试
CompletionHandler
中的错误:

final Index index = client.getIndex("contacts");
    Query query = new Query().setHitsPerPage(100);
    final CountDownLatch signal = new CountDownLatch(1);

    index.searchAsync(query, new CompletionHandler() {
        @Override
        public void requestCompleted(JSONObject content, AlgoliaException e) {
            if (e == null) {
                signal.countDown(); // Request success
            } else { 
                fail(e.getMessage()); // Request error
            }
        }
    });

    try {
        if (!signal.await(10, TimeUnit.SECONDS)) { // returns false when timeout
            fail("Didn't count down");
        }
    } catch (InterruptedException e) {
        fail("interrupted");
    }