2

を利用する Google App Engine - Java (GAE/J) にデプロイするコードがいくつかありますURLFetchService。JUnit を使用してこのコードをテストしたいと思います。テストのドキュメントにLocalURLFetchServiceTestConfigよると、次のようにクラスを大まかに使用するテストが必要なようです。

public class MyRemoteServiceTests {
    private static final LocalURLFetchServiceTestConfig urlConfig = new LocalURLFetchServiceTestConfig();
    private static final LocalServiceTestHelper helper = 
        new LocalServiceTestHelper(urlConfig);
    
    @Before
    public void setUp() throws Exception {
        service = new SampleService();
        helper.setUp();
    }

    @After
    public void tearDown() throws Exception {
        service = null;
        helper.tearDown();
    }

    @Test
    public void testThatCallsCodeThatUsesUrlFetch() {
            Object data = service.getRemoteDataUsingUrlFetch("foo", "bar");
            Assert.assertNotNull(data);
    }

}

テストに関する GAE/J ドキュメントで提案されているように、「ヘルパー」を使用しているにもかかわらず、このテストが引き続き失敗することがわかりましたThe API package 'urlfetch' or call 'Fetch()' was not found.

「ヘルパー」を使用すると、GAE環境が何らかの形でセットアップURLFetchServiceFactory.getURLFetchService()され、メソッド内から呼び出すとgetRemoteDataUsingUrlFetch、返されるインターフェースが「機能する」インスタンスになると想定していましLocalURLFetchServiceたが、そうではないようです。

  • このコードをテストするにはどうすればよいですか?
  • 何か不足していますか?(私はGAEにかなり慣れていません...)
  • getRemoteDataUsingUrlFetchローカルでテストできないため、使用しないようにリファクタリングする必要がありますURLFetchServiceFactory.getURLFetchService()か??? (それはさすがにヤバそうです…)

どんな助け/提案も大歓迎です!

4

2 に答える 2

2

実際、私の問題は、ドキュメントのLocal Unit Testingページに記載されている 2 つの追加の jar を含めなかったことが判明しました。RTMFTW!

  • appengine-local-runtime.jar
  • appengine-api-stubs.jar
于 2011-03-18T05:27:38.507 に答える
0

私の知る限り、LocalURLFetchService は期待どおりに GAE を構成しません。ただし、ローカル dev から URL をフェッチしてコンテンツを処理する方法に近い方法です。(同様に、LocalDatastoreService と LocalMemcacheService でさえ、テスト環境内の隔離されたスペースで動作します) コードをテストする 1 つの方法は、getRemoteDataUsingUrlFetch() をリファクタリングして、おそらく Url 応答の内容を取得することです。やや似ている、

URLFetchResponse resp = LocalURLFetchService.fetch(status, request)

getRemoteDataUsingUrlFetch(foo, bar, resp)
于 2011-03-17T08:44:56.200 に答える