JerseyクライアントAPIを呼び出すコードを記述しました.JerseyクライアントAPIは、自分のコントロールできないWebサービスを呼び出します。単体テストで実際のWebサービスを呼び出すことは望ましくありません。Jersey Client APIを呼び出すユニットテストコードはどうすればよいですか?
JerseyクライアントAPIを呼び出すコードの単体テストを作成する最適な方法は何ですか? JerseyサーバーAPIを使用してJAX-RS Webサービスを作成し、ユニットテストにJersey Test Frameworkを使用する必要がありますか?または、JerseyのWebサービスコールを模倣すべきですか?私はJMockにアクセスできます。それとも別のアプローチを試みるべきですか?
私の研究では、さまざまなオプションについて説明しているthis discussionが見つかりましたが、私は完全な解決策を見つけました。提案されているJUnitアプローチを示すコード例がありますか?私はJerseyの文書には何も見つかりませんでした。ここ
は、関連するソースコードである:ここ
public String getResult(URI uri) throws Exception {
// error handling code removed for clarity
ClientConfig clientConfig = new DefaultClientConfig();
Client client = Client.create(clientConfig);
WebResource service = client.resource(uri);
String result = service.accept(accept).get(String.class);
return result;
}
私が通過したいテストコードの例です。私は(1)有効なURIを渡して有効な文字列を取得し、(2)無効なURI(到達不能または許可されていないURI)を渡して例外を戻すことをテストしたいと思います。
@Test
public void testGetResult_ValidUri() throws Exception {
String xml = retriever.getResult(VALID_URI);
Assert.assertFalse(StringUtils.isBlank(xml));
}
@Test(expected = IllegalArgumentException.class)
public void testGetResult_InvalidUri() throws Exception {
retriever.getResult(INVALID_URI);
}
上記のすべては、私のコードが行うことの簡単な説明です。実際には、2つのURIを受け取り、最初に最初のURIを呼び出しようとするレイヤーがあります。そのURIが失敗すると、2番目のURIを呼び出しようとします。 (1)最初のURIが成功し、(2)最初のURIが失敗し、2番目のURIが成功し、(3)両方のURIが失敗するという単位テストが必要です。このコードはJUnitを使用してこれらのさまざまなシナリオをテストするのに十分複雑ですが、これを行うには実際のスタンダードWebサービスを実行するか、JerseyクライアントAPI呼び出しをモックアウトする必要があります。
何まさにあなたがこの方法でテストしたいですか?テストに合格した基準は何ですか? – dbf
ユニットテストをしたい場合は、適切な機能サービスが必要です。 – iDroid
@dbf私は、(1)有効なURIを渡して有効な文字列を取得し、(2)無効な(何らかの理由で - 到達不能または許可されていない)URIを渡して例外を取得するバック。 – BennyMcBenBen