4

SystemProperty.environment.value() から null を返す Google App Engine Java アプリと、SystemProperty の他のすべての静的メンバーがあります。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
  • メイヴン
  • アプリ エンジン SDK 1.8.5
  • Java 7 (1.7.0_40)
  • JUnit4
4

1 に答える 1

5

私は同じ問題を抱えていました。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 のみであることに注意してください。

于 2014-01-23T17:27:25.170 に答える