使用Algolia Android客户端进行单元测试时出现死锁
我试图在JUnit测试中使用algolia中的使用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
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");
}