Kotlin で JUnit4 のテストケースを書く
-
JUnit4 / Parameterized
-
Mockito 利用
-
テスト対象が Lombok, MapStruct 使用
な状況で Kotlin でテストコードを書きます。
先にまとめを書いておきます。
-
(IntelliJ で Java のコードを
.kt
にペーストすると Kotlin コードに変換してくれるが、コレジャナイ感溢れるコードになったのであまり自動変換コードを信用するのは危険かも) -
@Mock
や@InjectMocks
を付与したフィールドはlateinit var
-
static
メソッドを書きたい場合はcompanion object
で囲って@JvmStatic
アノテーションを付与する-
今回の場合は JUnit4 のパラメータ供給メソッド(
@Parameters
)が該当
-
Kotolin のプロジェクトを Maven で作成する
入門書を一通り読み終えたのでサンプルプロジェクトを作成しようと思いました。
JetBrains がメンテナンスしている archetype が利用できそうです。
mvn archetype:generate -DarchetypeGroupId=org.jetbrains.kotlin -DarchetypeArtifactId=kotlin-archetype-jvm
IntelliJ IDEA から作成した場合も似た感じの pom.xml
が作成されるかなと思います。
IntelliJ 最新版(2021.3) で Kotlin と Lombok が共存できない
[追記 2022-01-17] 今回リリースされた 213-1.6.10-release-944-IJ6461.79
で修正されたようです(ただし .idea
ディレクトリを削除してからインポートし直す必要がありました)。
Kotlin 1.5.20 から Lombok compiler plugin というものが提供されるようになり、 Kotlin から自動生成される getter などにアクセスできるようになりました(※実験的機能なようですが)。
Kotlin in Action (Kotlin イン・アクション) 読書メモ
Kotlin 関連書籍について
書籍 Kotlinイン・アクション を読んでいます。
2022 年 1 月現在の Kotlin 最新バージョン が 1.6.10
であるのに対し、本書が解説しているのは 1.0
のようなので、役に立つのかな…と当初は考えていましたが、今のところ、これは駄目だ、というところは無さそうです。
(気になる人はドキュメントの "Earlier versions" (このあたり) で新機能について説明があります)
Ubuntu で作業していると突然マウスホイールが効かなくなる
表題のような事象がたまに発生していて、これまではOS再起動で直していました。
その症状が今しがた出たのですが、ふと imwheel
をインストールしていたことを思い出してこれをアンインストールしてみたところ、再起動せずにスクロール機能が復活しました。
Spring Boot でサンプルコードを作成するときのプロパティなど
Stack Overflow で Spring Boot の質問に回答するときのサンプルプロジェクトを作成するとき、 Spirng Initializr を利用しているのですが、よく必要な dependencies を追加し忘れたり、設定しておいた方が良いプロパティってなんだっけかな、と迷うことがあります。
VSCode でエラー/警告アンダーラインの区別がつかない
VSCode のデフォルトの色設定だと、エラーの波線と警告の波線との区別が私の目では付けづらいのです。 おそらく赤色と黄色だと思うのですが…
色についてのプロパティは次のリンク先に説明がありました。
Spring Boot でカスタム validator に injection する
はじめに
Spring Boot で JPA Validator にインジェクションしようとしたけどできなかった、という話を何度か聞いてその度に調べていたので、次回に備えてまとめておきます。 サンプルコードはこちら:
Spring MVC で Java17 record を試してみる
(※ record
は Java14 でプレビュー版が導入、 Java16 で正式版が導入されたので Java17 というのは不正確なようですが…)
Java17 の record
を今まで利用してきた POJO から置き換えられるのかを簡単に見てみました。
Mapstruct Spring Extensions を試してみる
はじめに
MapStruct の公式サイトを見ていると、 Mapstruct Spring Extensions なるサブプロジェクトが発足していたので、何者か調べようと試してみました。
結果、これは Spring の ConversionService
の Converter
と MapStruct の Mapper
を統合して、実装を少し楽にしよう、というもののようでした。
STS(Eclipse) で Import Getting Started Content が進まない
Spring Tools 4 for Eclipse を利用していると、バージョンによって? プロジェクト新規作成時などで "Import Getting Started Content" というタスクが走るのですがこれが全く終わらないことがあります。
map で Result を引き回すときに Err を意識したくない その2
その1はこちらです:
その1では戻り値が i * 2
の i32
型になる話でしたが、その次に考えたかったのは Result
が返ってくるメソッドで引き回すときの話でした。こんな感じで:
Servlet 5.1 で Samesite 属性を設定できるようになる
現在の Servlet API では Cookie
に SameSite
属性を設定するメソッドがありません。
そのため、仕様外の、フレームワーク固有の方法だったり、低レイヤーの仕組みを使って設定する必要があります。