Java
きり丸アドベントカレンダー2020の13記事目です。だんだんToDoアプリケーションは関係なくなってきます。 対向システムに情報を渡すときに、データに取り扱い不可能な文字が紛れていることがあります。たとえば髙(はしごだか)であったり、ハイフンだったり…
きり丸アドベントカレンダー2020の12記事目です。 画面の項目が必須項目なのか、数字のみ許容するのか、Email形式のみしか許容しないのかをサーバ側で検証する必要があります。この項目を検証することをバリデーションと言います。 基本的には画面側のJavaSc…
きり丸アドベントカレンダー2020の11記事目です。 今回の記事でControllerのテストを行います。GET通信やPOST通信を行って、そのあとの挙動をテストします。 ゴール Controllerのテストを行う できないこと WebMvcTestでのテスト 環境 Java 15 手順 テストの…
きり丸アドベントカレンダー2020の10記事目です。 自分の勉強も兼ねてログイン機能を実装してみましたが、ベストプラクティスは分かりませんね…。難しい。 今回の記事でログイン機能を実装します。アプリケーションらしくなりますが、セキュリティをブラック…
きり丸アドベントカレンダー2020の9記事目です。 今回の記事でMyBatisのテストを行えるようにします。テスト用のスターターが準備されているので、テストのための準備は簡単です。ただし、テストのセットアップは慣れていないと、時間がかかってしまいます。…
きり丸アドベントカレンダー2020の8記事目です。 今回の記事でDBの更新を行います。データの取得(Select)と追加(Insert)をこの記事で紹介します。 更新と削除に関しても同様の処理で問題ありませんので、頑張ってみてください。なお、9日目にDBのテスト…
きり丸アドベントカレンダー2020の7記事目です。 6日目の記事でJava -> HTMLにデータを転送することができました。 しかし、それではデータを取得することしかできません。 今回の記事では、データの更新、削除、追加できるようにHTML -> Javaにデータを転送…
きり丸アドベントカレンダー2020の6記事目です。 始めに宣言しておくと、この辺から「やはりIntelliJ IDEAいいなぁ…」みたいに思うことが多くなってきます。しょうがないとはいえ、GitpodやVS Codeはライブラリのimport機能が貧弱です。 コーディング中に引…
きり丸アドベントカレンダー2020の4記事目です。 Gitpod上でDBの環境構築もできると、確認できることが増えます。DBも設定しましょう。 手順 .gitpod.Dockerfileを修正 gp initで作成したDockerのイメージにはPostgreSQLは含まれていません。ですので、.gitp…
きり丸アドベントカレンダー2020の3記事目です。ようやくSpringBootの起動ができます! なお、まだコードは触れません。 Springのプロジェクトを作成し、Gitpodにアップロードしました。しかし、現在のままではGitpodでSpringの開発をしようにも、そもそも起…
きり丸アドベントカレンダー2020の2記事目です。 Java歴6年になりますが、いまだにゼロからプロジェクトを作成するのは苦手です。というか、出来ないですね…。 じゃあ、どうやってプロジェクトを作っているかというと、Spring Initializrというサイトでプロ…
きり丸アドベントカレンダー2020の1記事目です。今回のアドベントカレンダーはJavaとSpringBootを使いつつ、TODOアプリを作って公開するところまでやりたいと考えてます。 はじめてのJavaのプログラミングに最適!という形で皆さんに紹介できたら、と考えて…
過去に所属していたプロジェクトでは、CIが終わるまでに2.5時間ほどかかっていました。その中で極稀に対向システムのモックがうまく立ち上がっていなかったり、DBのセットアップが終わらないままテストを行ったりして、テストに失敗することがありました。 …
以前、Flywayで参照制約を追加したが、既存のデータが既に参照制約違反だったため、四苦八苦した話を書きました。 ※以前の記事。 nainaistar.hatenablog.com その後、色々知った後に検証をしていると、いろいろと勘違いしていることが分かったので、忘れない…
「assertThat」と検索すると私のブログに引っかかる人がいるようなので、この記事を書きました。ただ「AssertJ」と検索すると、たくさん有用な記事も見つかります。 なので、この記事は「AssertJ徹底解説」ではなく、「きり丸がよく使うAssertJのメソッド」…
2021/03/31 追記 SpringBoot2.4以降の場合はこちらの記事も参考にしてみてください。 SpringBootではpropertiesファイルやymlファイル(以降、設定ファイル)に、DBのURL等々の環境ごとの変数を記載できます。 設定ファイルの値が目的通り一致していることを…
前回の記事にて、まるでlombokに何の不満もないような書き方しました。 ただ、実際にデフォルトで使っているといくつか不満点がでました(タイトルにある通りざっくり3つ)。 なので、lombokの不満点を解消すべく、調べたのがこの記事です。 不満点一覧 どん…
最近、レベルアップのためにEffective Javaの第3版を読むようになりました。 そのなかで、「第2章 項目2 多くのコンストラクタパラメータに直面した時にはビルダーを検討する」を読んだ時にこう思いました。 「意外とBuilderって知られてない?」 なので、lo…
2022/01/26 更新 会社でもう一度同じエラーが発生したので、メモを追記します。PKIXというエラーが発生しました。 会社でproxyサーバ経由し、javaのgradleでライブラリをダウンロードできなかったので、設定した手順を残します。 流石に会社のコマンドをその…
過去にJavaのテストについていろいろ書きました。 パラメタライズドテスト、assertEqualsとassertThatとの比較等々…。 色々と学んだのですが、ダイナミックにテスト項目を増やす方法が分からず、苦汁をなめながらアサーションルーレットなテストを書いていま…
テスト設計というのは非常に難しいです。 ちょっとでも見誤ると、すぐにテストができない設計になってしまい、テストをしないという設計になってしまいがちです。 これを避けるためにTDDを行うのですが、粒度の違うUTとE2Eではテストの設計が違ってくるので…
※ もっと高速化する方法がありましたら教えていただきたいです。 もしくは、高速化するためのリファレンスページ教えてください。 はじめに Springフレームワークは、DI機能を持っており、依存関係を疎にできます。 テストするときは、@SpringBootTestのアノ…
前に、JavaでJsonを比較しつつ、特定の項目を無視するやり方をする記事を書きました。 同様にJavaでXMLを比較しつつ、特定の項目を無視するやり方を調べたので、記事に残しておきます。 環境 Java 下記のどれか org.assertj.core.api.Assertions.assertThat …
自分用のメモ。 Cloneメソッドを自分で用意するのめんどくさいなー。 できればライブラリ使って簡単にコピーしたいなー。 って思ったら、簡単にできたので、共有。 ディープコピーで調べるとすぐ出てくるのに、Cloneで調べると頑張って自作するタイプの記事…
つい最近まで、ListのListのListの… といったドメインがNestされるとラムダ式でうまく取り出せなかったのが、Javaでようやく取り出せるようになったのでメモ。 当然、ラムダ式使わない方法はあるんですが、知ることでと幅が広がるので…。 なお、メソッド参照…
自分用記事。 JSON比較に手間取ったので、未来の自分に役に立つはず。 なお可能であれば、assertThatのメソッドチェインに加えたいので、もしそっちで比較できることを知っていれば教えてほしいです…。 環境 org.skyscreamer.jsonassert JSONAssertで読み込…
こんな障害が出た、って話で笑い飛ばしてくだせー。 正直、ORMapperでN+1問題とかはよく聞くけど、この挙動は想定外で笑ってしまったので次の犠牲者が出ないことを祈る。 なお半年前に起こった障害なので、ざっくりとした原因は覚えていますが、対応内容とか…
TypescriptやJavaScriptを使用しているエンジニアでは、eslintを使って静的解析をしている人が多いと思います。もちろん、フロント部分はそれでいいと思います。 では、バックエンドはどうでしょうか。私もそこまで静的解析に強いわけではありませんが、Java…
※ 20221117 更新 直接的には関係ないですが、こちらも一つの解決策です。 【設計論】文字列だと単純にラップした型でも便利 - きり丸の技術日記 本番環境までは流れなかったものの、Javaで雑に文字列結合していたせいで、"null様"を出してしまいました。 回…
もっともっといいテストが書きたい(AssertAllをもっと使う) 下記の記事を書いて、 「テストで必要なことを全て書いた! あとは、テストに慣れるだけだ!」 と、思ってたのですが、思ったよりもassertAllを使いたい場面が増えてきたので、自分用へのメモを残…