我已经部署了一些我正在部署到Google App Engine的代码 - 使用URLFetchService
的Java(GAE / J)。我想用JUnit来测试这段代码。根据它出现的testing documentation,,我应该进行一项测试,使用他们的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
时,返回的接口将是{{1}的实例只会“工作”,但似乎并非如此。
LocalURLFetchService
以便它不使用getRemoteDataUsingUrlFetch
因为这使得它在本地不可测试??? (这听起来真的很糟糕......)非常感谢任何帮助/建议!
答案 0 :(得分:2)
实际上,事实证明我的问题是未能在文档的Local Unit Testing页面上包含两个额外的jar。 RTM FTW!
答案 1 :(得分:0)
afaik,LocalURLFetchService不像您期望的那样配置GAE。它更像是一种从本地dev获取URL然后处理内容的方法。 (同样,即使LocalDatastoreService和LocalMemcacheService也在测试环境中的隔离空间上运行) 测试代码的一种方法是重构getRemoteDataUsingUrlFetch()以获取Url响应的内容。有点像,
URLFetchResponse resp = LocalURLFetchService.fetch(status, request)
getRemoteDataUsingUrlFetch(foo, bar, resp)