モックを利用ぜず、DBにアクセスするサービスクラスのテスト方法
今回は依存クラスを利用したサービスクラスの単体テストの実装方法についてサンプルと合わせて説明する。
モックを利用ぜず、DBにアクセスするサービスクラスのテスト方法テスト対象(サービスクラス)を@Injectアノテーションで呼び出す際以下のサンプルのようにcontext.xmlに記述する。
また、リポジトリを依存関係を使って呼び出す方法はリポジトリの単体テスト方法 に記載している。
今回は依存クラスを利用したサービスクラスの単体テストの実装方法についてサンプルと合わせて説明する。
モックを利用ぜず、DBにアクセスするサービスクラスのテスト方法テスト対象(サービスクラス)を@Injectアノテーションで呼び出す際以下のサンプルのようにcontext.xmlに記述する。
また、リポジトリを依存関係を使って呼び出す方法はリポジトリの単体テスト方法 に記載している。
今回は、業務でリポジトリの単体テストを実施したため、テスト方法や設定などをサンプルと合わせてあげたいと思います。
リポジトリの設定方法context.xmlにて<mybatis:scan>を用いてリポジトリのパスをしていすることでテスト時に@Injectで依存関係の設定する。
以下のサンプルをcontext.xmlに追加する。
<mybatis:scan base-package="リポジトリのパス"/>
DBアクセス方法
リポジトリのDBアクセスを行う場合、context.xmlにてDBのbean定義を行う。
今回はh2 databaseを使用する設定を以下に記す。
今回は単体テスト時にログの出力内容を検証をすることになったため、ログの出力内容の検証の方法で調べたことをサンプルと合わせてあげたいと思います。
出力されたログの検証方法出力されたログを検証する際、検証前に以下のサンプルのように値を設定する。
今回は単体テスト時にテスト対象にクラスが依存しているクラスが正しく使われているかなどを検証する際やテスト対象が呼び出している別クラスのメソッドの代替して処理を行う際などに使うmockの使用方法についてサンプルと合わせてあげたいと思います。
クラスのmock化方法(モックの初期化)テスト対象で呼び出しているメソッドのクラスや引数をモック化する際、mockメソッドを使用することでモック化することができる。
サンプルを以下に示す。
業務でエラーの出力をスタックトレースで行ってい処理を検証することになったため標準エラー出力先を変更し検証をいたしました。 今回はサンプルと合わせて標準出力先の変更方法についてあげたいと思います。
標準エラー出力先の変更方法標準エラー出力先の変更するためSystem.setErr()で標準エラー出力先を任意のPrintStreamに変更ができる。PrintStreamはbyte[]をもとに作成できる。
サンプルを以下に記述する。
今回は業務で単体テストを作成中にFilesクラスのcreateDirectorysメソッドでIOExceptionが発生した際の処理をテストするためにモックを使用してIOExceptionを発生させる方法をサンプルと合わせてあげたいと思います。
モック化するクラスFilesクラスのcreateDirectoryメソッドでIOExceptionを発生させるために以下のクラスをモック化する。
今回業務で単体テスト中にStatic Methodをモック化し検証する必要があり調べたことをサンプルコードと合わせてあげたいと思います。
Static Methodのモック化方法まず、Staticなメソッドをモック化する際の前提条件としてmockito-inline:3.4.0を使用している必要があります。
Staticなメソッドをモック化する際、MockitoのmockStaticメソッドを使用してモック化することができます。
以下にサンプルを記述します。
HTTPリクエストをcurlで試行したりFetch APIで実装したりする際、「この処理はどう書くんだけ?」といったことが稀によくあります。
そこで、詰まりがちな点についてサンプルコードを挙げつつまとめてみました。
傾向と対策基本的にはそのまま書けばいいです。curlの場合は最後のコマンドライン引数、Fetch APIの場合は第一引数で指定します。どちらのコマンドも、デフォルトではGETリクエストとして扱います。
タイトルの通りです。ググっても検索上位に出ないので、調べるのが地味に大変でした。
解決方法答えは公式のトラブルシューティングに掲載されていました。