我有一个Google App Engine Java应用,该应用从SystemProperty.environment.value()和SystemProperty的所有其他静态成员返回null。通过Maven运行JUnit测试时,我看到了这一点。

import com.google.appengine.api.utils.SystemProperty;
...
void printProps() {
    log.info("props:" + System.getProperties());
    log.info("env=" + SystemProperty.environment.value());
    log.info("log=" + System.getProperty("java.util.logging.config.file"));
    log.info("id=" + SystemProperty.applicationId.get());
    log.info("ver=" + SystemProperty.applicationVersion.get());
}

上面唯一返回非null的项目是System.getProperties()。

以下是我的设置的一些详细信息:
  • IntelliJ IDEA EAP 13
  • Maven
  • App Engine SDK 1.8.5
  • Java 7(1.7.0_40)
  • JUnit 4的
  • 最佳答案

    我遇到了同样的问题。我试图在LocalServiceTestHelper上调用这些方法,但这些方法并未填充SystemProperty.applicationId或SystemProperty.version

    setEnvAppId(java.lang.String envAppId)
    setEnvVersionId(java.lang.String envVersionId)
    

    例如
    public final LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig(), new LocalTaskQueueTestConfig() ).setEnvAppId("JUnitApplicationId").setEnvVersionId("JUnitVersion");
    

    我的解决方案只是自己在JUnit setUp()方法中填充这些属性:
    @Before
    public void setUp() throws Exception {
        SystemProperty.version.set("JUnitVersion");
        SystemProperty.applicationId.set("JUnitApplicationId");
        SystemProperty.applicationVersion.set("JUnitApplicationVersion");
        SystemProperty.environment.set( SystemProperty.Environment.Value.Development );
        helper.setUp();
        datastore = DatastoreServiceFactory.getDatastoreService();
        queue = QueueFactory.getDefaultQueue();
    }
    

    请注意,SystemProperty.Environment的唯一有效值是静态最终值Production和Development。

    07-24 09:35