リポジトリの単体テスト方法

  •  
 
yokoe に投稿

タグ

概要

今回は、業務でリポジトリの単体テストを実施したため、テスト方法や設定などをサンプルと合わせてあげたいと思います。

リポジトリの設定方法

context.xmlにて<mybatis:scan>を用いてリポジトリのパスをしていすることでテスト時に@Injectで依存関係の設定する。 以下のサンプルをcontext.xmlに追加する。

<mybatis:scan base-package="リポジトリのパス"/>
DBアクセス方法

リポジトリのDBアクセスを行う場合、context.xmlにてDBのbean定義を行う。 今回はh2 databaseを使用する設定を以下に記す。

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="org.h2.Driver" />
    <property name="url" value="jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;" />
    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>
リポジトリのテスト方法

@Injectを用いてリポジトリを呼び出し、DBアクセス処理を検証する。 サンプルを以下に示す。

@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:context.xml")<!-- 1 -->
public class RepositoryTest {
    @Inject
    private Repository repository;<!-- 2 -->

    @Test
    @Sql("classpath:createAndInsert.sql")<!-- 3 -->
    public void executeService_サービス実行処理正常終了() {
       // 試験実行
       List<TestDto> actual = repository.selectAll();<!-- 4 -->

       // 実行結果検証
       assertThat(actual.size()).isEqualTo(2);
       assertThat(actual.get(0).getName).isEqualTo("name");<!-- 5 -->

    }
}

1.ContextConfigurationアノテーションで指定したクラスパス内にあるcontext.xmlファイルを読み込む。 2.テストするリポジトリを呼び出す。
3.@Sqlアノテーションでテーブルの作成とデータを追加するSQLファイルを読み込む
4.リポジトリのDBアクセスを行うメソッドの呼び出し、戻り値を受け取る。
5.検証ではDBアクセスした結果を検証する。リストのサイズやリストの中身を検証する。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。