0

インメモリ DB (H2) に対して特定の統合テストを実行し、Oracle テスト DB に対して他の統合テストを実行する方法を見つけようとしています。私の限られたテスト作成経験かもしれませんが、一部のテスト (検索クエリなど) はクエリ対象のデータ セットを制御できるため、メモリ内での使用により適しているように思われます。また、トランザクション/永続性のテストなどの他のテストでは、REAL スキーマを使用することでメリットが得られるようです。および DB (オラクル)。

私は2つのアプローチを考えることができますが、どちらも実装する方法がわかりません:

  1. integration-test-in-mem と integration-test (oracle を使用) を使用して、異なるテストを異なるフェーズで実行し、それぞれを異なる DB 用に構成できるように、新しいテスト フェーズを追加します。
  2. どのデータソースを使用するかを各テストで制御する

最初のほうがきれいなので、使用するデータソースを制御するロジックでテストを汚染する必要はありません。

また、2 つ目は、ドメインごとに異なるデータソースを設定するだけではありません。異なる DB に対する異なるテストで同じドメインを再利用したいと考えています。

アイデアを歓迎します。これを行った場合は、共有してください。SPOCKを使用しています。

4

2 に答える 2

0

これは、Luke Daley によるカスタム テスト フェーズ/タイプの追加に関するブログ記事です。誰かがこれを実装しましたか?それを読み、用語をよりよく理解した今、私がやりたいことは、フェーズではなく、新しいタイプを設定することだと思います。残念ながら、spock を使用しているため、基本的には既にカスタム タイプを使用しています。spock を 2 つのタイプの 1 つとして残し、「SPOCK-IN-MEM」タイプを作成する可能性がありますが、これには spock タイプの再定義が必要になる可能性がありますが、これは機能しない可能性があります。どんなアドバイスでも大歓迎です。これは十分に頻繁に出てくるようで (他のフォーラムで他の人が尋ねたこの質問を送信しました)、もっと簡単な方法があるはずです。

于 2013-12-16T16:10:27.473 に答える
0

もう1つの発見。注釈が付けられた環境に対してのみテストを実行するための注釈を追加する spock 用の環境プラグインがあります。spock の無視されたテスト機能を再利用しており、非常に小さく、シンプルで、クリーンです。唯一の欠点は、私たちのグループにとって問題ではないスポックです。

命名規則のように、フェーズを定義するより簡単な方法があればよいでしょう。test// などのディレクトリ命名規則だけでフェーズ/タイプを定義できると便利です。フォルダを作成するだけです。次に、test-app の実行時に引数にフェーズ/タイプ/環境を明示的に設定するだけで、実行を制御できます。

于 2013-12-16T17:43:54.240 に答える