ローカルの Jetty インスタンスで実行されている Google App Engine プロジェクトに対して統合テストを作成しています。
テストを実行する前に、GAE Web サービスの新しいインスタンスを で生成しますhttp://localhost:8083
。起動時に、Web サービスはデータを書き込む memcached インスタンスを作成します。Google Guice を使用しているため、これは次のようなバインディングで行われます。
bind(AsyncMemcacheService.class).toInstance(MemcacheServiceFactory.getAsyncMemcacheService());
bind(MemcacheService.class).toInstance(MemcacheServiceFactory.getMemcacheService());
Web サービスが稼働したら、統合テストを開始します。重要なことに、それらは独自の memcached バインディングを作成する別の Jetty インスタンスで開始されます。
次のような統合テストを作成しました。
@Test(groups = "integration")
private void doSomeTest() {
//set up some precondition for the test
String id = "myIntegerObject";
this.memcached.putSomeObject(id, 0);
try {
//call an endpoint that relies on the previously set value
String url = "http://localhost:8083/api/increment/" + id;
this.http.post(url);
} catch (Exception e) {
e.printStackTrace();
Assert.fail("Test failed. See inner exception for details.", e);
}
//verify that hitting the url had the desired effect
Assert.assertEquals(this.memcached.getSomeObject(id), 1);
}
Assert.assertEquals(...);
Web サービスと統合テストが memcached の異なるインスタンスに書き込みを行っているため、このテストは常に途中で失敗します。
Web サービス、単体テスト、および統合テストがすべて共有するシステム全体の memcached インスタンスをセットアップする方法はありますか?