12

JAX-RS WebサービスをJerseyライブラリで実装していますが、テストしたいと思います。そのために、モックサービスで事前に初期化して、テストでこのサービスをホストしたいと思います。

そのようなサービスをホストし、テスト呼び出しを実行するための最良の方法は何ですか?

@Path("/srv")
public class MyService
{
   @GET
   public void action(@Context UriInfo uri)
   { ... }
}

@Test
public void myTest()
{
   MyService service = new MyService();
   service.setSomething(...);

   // How do I host it?

   // How do I call it?
}
4

6 に答える 6

9

Jersey 1.1.2-eaリリースの一部である新しい(改訂された)Jersey Test Frameworkは、インプロセスまたはインメモリテストをサポートするようになりました。インメモリでテストを実行するには、プロパティtest.containerFactorycom.sun.jersey.test.framework.spi.container.inmemory.InMemoryTestContainerFactoryに設定するだけです。つまり、次のようにテストを実行します。

mvn clean test -Dtest.containerFactory = com.sun.jersey.test.framework.spi.container.inmemory.InMemoryTestContainerFactory -DenableLogging

詳細については、Jersey TestFrameworkre-visitedというタイトルのブログエントリを参照してください。http://blogs.oracle.com/naresh

于 2009-08-27T06:39:11.317 に答える
5

ジャージーテスト フレームワークは、お客様の要件に対するソリューションを提供すると思います。単一のサービスをデプロイし、そのすべてのテストを実行できます。このフレームワークを使用して、Grizzly Web Container、Embedded GlassFish、および/または HTTPServer に対してテストを実行できます。

このフレームワークを使用して、GlassFish や Tomcat などの通常の Web コンテナーに対してもテストを実行できることに注意してください。さらに質問がある場合は、私またはジャージー ユーザー メーリング リスト (users@jersey.dev.java.net) に電子メールを送ってください。

于 2009-06-09T07:02:51.917 に答える
2

試したことはありませんが、HtmlUnit や HttpUnit などの JUnit 拡張機能は、JAX-RS/Jersey サービスをテストする良い方法かもしれません。テスト ケースでは、XPath を使用して期待される戻り値を見つけ、期待値に対して戻り値を検証できます。詳細については、http: //htmlunit.sourceforge.net/gettingStarted.htmlを参照してください。

于 2009-05-28T17:10:49.677 に答える
1

Grizzly を使用してサービスをホストし、Jersey Client を使用してサービスにアクセスできます。サンプル アプリケーションを見てみましょう。たとえば、Bookstore サンプルでは、​​特に関心のある TestSupport クラスと JerseyTest クラス (jersey-test-framework にある) を見つけることができます。

これが役立つことを願っています。

(残念ながら、すべてのハイパーリンクを削除するまで、スタック オーバーフローでは投稿できませんでしたので、Google をご利用ください)。

于 2009-05-28T19:27:27.217 に答える
0

Jersey Test Frameworkの使用について調べましたか? 残念ながら、これはまだ単体テストというよりも統合テストに近いものですが、道に迷うかもしれません。

于 2009-05-28T22:17:39.013 に答える
0

わかりました。現在、フレームワークは IN PROCESS をサポートしていませんが、現在取り組んでいます。このサポートは、Jersey Test Framework の今後のバージョンで追加される予定です。

于 2009-07-07T11:23:42.473 に答える