有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

任务队列任务中的java单元测试请求超时

根据available documentation,appengine测试助手类LocalServiceTestHelper可以模拟来自ApiProxy.getCurrentEnvironment().getRemainingMillis()的结果

只要代码在创建帮助程序的同一线程中运行,这一切都可以正常工作,但是当测试是多线程的(例如测试延迟的任务)时,第二个线程似乎不会使用模拟响应

如何让助手类在任务队列任务中设置ApiProxy.getCurrentEnvironment().getRemainingMillis()的返回值


共 (1) 个答案

  1. # 1 楼答案

    调用LocalServiceTestHelper.setUp()只会在当前线程中设置您的环境,正如您所发现的那样

    调用setUp()后,您应该能够使用ApiProxy.Environment testEnv = ApiProxy.getCurrentEnvironment()获得刚刚设置的环境;在总是返回testEnvApiProxy.EnvironmentFactory实现中包装testEnv。然后,调用ApiProxy.setEnvironmentFactory,传入新工厂

    final ApiProxy.Environment testEnv = ApiProxy.getCurrentEnvironment();
    ApiProxy.setEnvironmentFactory(new ApiProxy.EnvironmentFactory() {
      @Override
      public ApiProxy.Environment newEnvironment() { return testEnv; }
    };
    

    这将导致在所有线程中使用相同的环境

    该方法未经测试,但根据doc,它看起来是合理的