きり丸の技術日記

技術・エンジニアのイベント・資格等はこちらにまとめる予定です

テスト

【2021】SpringBootでpropertiesやymlの設定ファイルが読み込めることのテストを書く

去年書いた記事で使用していたクラスがDeprecatedになっていたので、新しく更新します。 前回の記事を書いた時にアップデートしておけばよかったです。 変更点 ConfigFileApplicationContextInitializer から ConfigDataApplicationContextInitializer に変…

JavaでRESTが簡単にテストできるRest-Assuredを素振りしてみた

JavaでRESTが簡単にテストができるとされるRest-Assuredというライブラリを知ったので素振りしました。ですので、あまり深い話はこの記事ではしません。 なお、印象としてはSpringのMockMvcを使っているのであれば、わざわざ追加でRest-Assuredを導入はしな…

エンティティを渡すだけでDBのユニットテストのセットアップしたい(SimpleJdbcInsertとBeanPropertySqlParameterSource)

皆さんはDBのユニットテストを行うとき、どのようにテストのセットアップを行っていますか。 私はSimpleJdbcInsertを使用しています。テーブル名とInsert対象のカラムと値のマップを渡すだけで更新してくれるので、個人的には使いやすいと思っています。 し…

SpringSecurityが導入されているControllerをWebMvcTestでテストする【SpringBoot】

以前にControllerをテストする記事を書きました。しかし、SpringBootTestの使い方しか分からなかったので、WebMvcTestのやり方を理解していませんでした。 ですが、ToshiakiMaki@makingさんのサポートにより、なんとかWebMvcTestでのテストができるようにな…

SpringSecurityを使ったRestControllerのテストを行う

きり丸アドベントカレンダー2020の16記事目です。 自システムのデータをREST APIで公開すると、非同期で処理ができるようになるのでフロントのシステムをSPAにできたりします。第三者にデータを提供することもできます。 ぜひ、REST APIでシステムを公開する…

データベースのH2を使用してMyBatisの取得・更新のテストを行う(JavaとSpringBoot)

きり丸アドベントカレンダー2020の9記事目です。 今回の記事でMyBatisのテストを行えるようにします。テスト用のスターターが準備されているので、テストのための準備は簡単です。ただし、テストのセットアップは慣れていないと、時間がかかってしまいます。…

【Java】不安定なテスト(Flakyなテスト)に失敗したら自動リトライさせるライブラリを使用する(test-retry-gradle-plugin)

過去に所属していたプロジェクトでは、CIが終わるまでに2.5時間ほどかかっていました。その中で極稀に対向システムのモックがうまく立ち上がっていなかったり、DBのセットアップが終わらないままテストを行ったりして、テストに失敗することがありました。 …

RPAツールのKatalon Recorderでシナリオをインポート・エクスポートする

「Katalon Recorder インポート」で検索しても、「インポートはできない」という記事しか見つかりませんでした。見つかっても、単語が似ている「Katalon Studio」の方法ばかり。しかし、バージョンが上がったのか、Katalon Recorderで色々と試したところ、イ…

【Java】よく使うassertThatのメソッド集【AssertJ】

「assertThat」と検索すると私のブログに引っかかる人がいるようなので、この記事を書きました。ただ「AssertJ」と検索すると、たくさん有用な記事も見つかります。 なので、この記事は「AssertJ徹底解説」ではなく、「きり丸がよく使うAssertJのメソッド」…

SpringBootでpropertiesやymlの設定ファイルが読み込めることのテストを書く【Java】

2021/03/31 追記 SpringBoot2.4以降の場合はこちらの記事も参考にしてみてください。 SpringBootではpropertiesファイルやymlファイル(以降、設定ファイル)に、DBのURL等々の環境ごとの変数を記載できます。 設定ファイルの値が目的通り一致していることを…

【JS】JestでJsonを比較する(特定の項目を無視する)

「JavaでJsonを比較する記事」を職場のSlackに貼ったところ、フロントでもjsonをいい感じに比較したいという依頼が来ました。 ちゃんとヒアリングしていないので、相手の環境を妄想する。 妄想環境 ソースコードは自動生成で、テストが一切ない IN/OUTだけで…

【Java】【テスト究極系】動的にテスト対象を増やして、アサーションルーレットを回避する

過去にJavaのテストについていろいろ書きました。 パラメタライズドテスト、assertEqualsとassertThatとの比較等々…。 色々と学んだのですが、ダイナミックにテスト項目を増やす方法が分からず、苦汁をなめながらアサーションルーレットなテストを書いていま…

【Spring】TestExecutionListnerを継承した自作アノテーションでSpringのテストセットアップを快適にする

テスト設計というのは非常に難しいです。 ちょっとでも見誤ると、すぐにテストができない設計になってしまい、テストをしないという設計になってしまいがちです。 これを避けるためにTDDを行うのですが、粒度の違うUTとE2Eではテストの設計が違ってくるので…

【Spring】Spring機能使いつつ、テストを高速化する

※ もっと高速化する方法がありましたら教えていただきたいです。 もしくは、高速化するためのリファレンスページ教えてください。 はじめに Springフレームワークは、DI機能を持っており、依存関係を疎にできます。 テストするときは、@SpringBootTestのアノ…

【Java】JavaでXMLを比較する(特定の項目を無視するやり方)

前に、JavaでJsonを比較しつつ、特定の項目を無視するやり方をする記事を書きました。 同様にJavaでXMLを比較しつつ、特定の項目を無視するやり方を調べたので、記事に残しておきます。 環境 Java 下記のどれか org.assertj.core.api.Assertions.assertThat …

JavaでJsonを比較する(特定の項目を無視するやり方)

自分用記事。 Json比較に手間取ったので、未来の自分に役に立つはず。 なお可能であれば、assertThatのメソッドチェインに加えたいので、もしそっちで比較できることを知っていれば教えてほしいです…。 環境 org.skyscreamer.jsonassert JSONAssertで読み込…

もっともっといいテストが書きたい(AssertAllをもっと使う)

もっともっといいテストが書きたい(AssertAllをもっと使う) 下記の記事を書いて、 「テストで必要なことを全て書いた! あとは、テストに慣れるだけだ!」 と、思ってたのですが、思ったよりもassertAllを使いたい場面が増えてきたので、自分用へのメモを残…

もっといいテストが書きたい(AssertEqualsとAssertThatの検証)

AssertEqualsとAssertThatの挙動の違いがよくわかってないところがあったので検証しました。 検証したくなった理由 個人的にはAssertEqualsで全部行えばいいと思ってました。 assertThatでしかできないことというのは、Equalsよりも弱い検証になりがちなので…

パラメータだけ変えて中身は同じテストをしたい(ParameterizedTest)

Javaでもっといいテストが書きたい! ということで、Junit5のParameterizedTestに注目して調査しました。 正直、どんな機能が眠っているのかよくわかっていないので、もしオススメの機能があれば教えていただきたいです。 なお、結論については、自分の主観…