我正在java中为我的项目执行功能测试。
当我尝试在测试方法中订阅或发布时,即使连接正常,PubNub也没有进行回调。
如果我尝试从单独的Java客户端发布或订阅该频道,则回调效果很好。
public class FunctionalTest {
private Logger logger = LoggerFactory.getLogger(FunctionalTest.class);
@Test
public void verifyCreateSuccess() throws JAXBException,IOException {
Pubnub pubnub = new Pubnub("publisher-key", "subscriber-key");
Callback callback = new Callback() {
public void successCallback(String channel, Object response) {
logger.info("PUBLISHER::" + response.toString());
}
public void errorCallback(String channel, PubnubError error) {
logger.info("PUBLISHER::" + error.toString());
}
};
try {
pubnub.publish("foo-test",new JSONObject().put("test", 1),callback);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
Jnit测试在Pubnub调用完成之前完成。在其中一个测试用例中放一个60秒的睡眠状态,看看你是否得到了发布(不是说需要60秒,只是想确保你停留足够的时间)。
当你调用publish时,方法立即返回,但是工作排队,这就是为什么我们使用回调,测试退出,pubnub对象超出范围而且回调永远不会触发。
这真的不是PubNub问题,就像尝试使用像PubNub这样的异步框架使用单元测试框架编写功能测试一样。