以下のテストケースを「クリーン」テスト、つまりテスト後にデータベースの変更を自動的にロールバックすることをお勧めします。「きれいな」統合テストの作成 - ジャージー2とスプリングを使用したREST
@Test
public void testUpdate(){
ClientConfig clientConfig = new ClientConfig();
clientConfig.register(JacksonFeature.class);
Client client = ClientBuilder.newClient(clientConfig);
Name name = new Name(1L,"Updated","Updated");
Response response = client
.target("http://localhost:8080/jersey-spring/name/").request().header("Content-type", MediaType.APPLICATION_JSON).post(Entity.json(name));
Assert.assertTrue(response.getStatus() == 200);
}
残りのサービスは、統合テスト中にjetty-maven-plugin
を使用して展開されます。私が今直面している問題は、 transactional
のテストを使用できないということです。これは、テスト後に手動でデータベースの状態を変更する必要があり、非常に面倒です。
私の質問は、jersey
をRESTプロバイダとして使用するときに、「クリーン」な統合テストを実行するための推奨されるアプローチです。私はJerseyTest
も使ってみましたが、同じ問題に直面しています。
さまざまな理由から、JerseyをSpring MVCに置き換えることはできません。
更新
- 何のモック関与はありません。テストは終わりから終わりです。
- 私は積分テストのための生産設定に近づきたいので、統合テストにはメモリ内DBは使用されていません。
私も同様の結論に達しました。ドッカーチップのおかげです。私たちはコードで多くの手続き(レガシー)を使用する傾向があるので、DBユニットは私の選択肢ではありません。私はドッカー+オラクルが行く方法だと思います。 – ArunM
プロシージャでDBUnitを使用できなくなるのはなぜですか?スクリプト(schema.sqlなど)を使用するか、移行ツールを実行して、スイートの前のDB(プロシージャを含む)を初期化します。その後、DBUnitを使用してデータを入力して検証できます。私を信じて、そこに行って、それをやった:) –