Тест JUnit кода, который использует GAE / J URLFetchServiceFactory.getURLFetchService () - PullRequest
2 голосов
/ 17 марта 2011

У меня есть код, который я развертываю в Google App Engine - Java (GAE / J), который использует URLFetchService.Я хотел бы использовать JUnit для тестирования этого кода.В соответствии с документацией по тестированию представляется, что у меня должен быть тест, который использует их LocalURLFetchServiceTestConfig класс ROUGHLY следующим образом:

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(), потому что это делает его непроверенным локально ???(Звучит так, будто это действительно отстой ...)

Любая помощь / предложения очень ценятся!

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

На самом деле, оказывается, что моя проблема заключалась в том, что я не смог добавить два дополнительных банок, которые упоминаются на странице документации Local Unit Testing .RTM FTW!

  • appengine-local-runtime.jar
  • appengine-api-stubs.jar
0 голосов
/ 17 марта 2011

afaik, LocalURLFetchService не настраивает GAE, как вы ожидаете.Это скорее способ извлечь URL из локального разработчика и затем обработать его содержимое.(Точно так же даже LocalDatastoreService и LocalMemcacheService работают в изолированных пространствах в тестовой среде). Один из способов тестирования вашего кода - это рефакторинг getRemoteDataUsingUrlFetch () для получения, возможно, содержимого ответа Url.что-то вроде

URLFetchResponse resp = LocalURLFetchService.fetch(status, request)

getRemoteDataUsingUrlFetch(foo, bar, resp)
...