Kotlin SpringBoot Junit5にてテスト開発
先週に引き続きKotlin開発中。
Spring boot Test ライブラリを使用しながら、テストコードを作成。
使用しているバージョンは2.5.6であるため、標準でJunit5が登載されているらしいのだが、気づかずJunit4をExculde→Jupiter apiを依存関係に設定するなどやや躓いた
いざコードを記載するも、意外とすんなりテストコードはかけたように思う。
以下、勘所。
・とりあえず基本的な記述は、テストアノテーションをつけるくらいで通常のコードと同じでOK
・DIを使用してインスタンスを作るのか、DIコンテナは使用しないか迷い。
Autowiredで問題なく動いたため、一旦はDIコンテナ使用で作成。
→そういえば、コンストラクタインジェクションにリファクタリングできていないことに気づく。。
・@ExtendWithの使い方がよくわからなかった。
どうも独自のクラスを使用し、テスト用に共通かする仕組み(利用用途)?
↑この辺が参考になる
明日は仕事なので記録としてはこの辺で…
Kotlin DDD開発
以前からリファクタリングしながら開発しているKotlinプロジェクトを
今日も更新しました。
前回はマルチプロジェクト化して検証していましたが、デプロイにて失敗し、
わからないまま数日が経過。
結果某サイトにて質問して開発を進めることに。。(質問の回答待っています)
Adapterクラスにて他装置のとのインターフェースモジュールを開発中。
素人ながらアダプターパターン(デザインパターン)を実践的に導入しながら
開発中。
なんとなくわかってきたかも。。
今回は、RestAPI、Socket、CSVリードの各インターフェースを、Adapterインターフェースを用意して、継承することで利用するにしました。
よくあるデザインパターンを参考に作成ましたが、ある程度の分離には成功してきている気がします。
まだまだ雑な設計ですが、これからも逐次実践していこうと思います。
そういえば・・・
今更ですが、変数をメソッド内に定義するのか、クラス変数とするのか、
その勘所を勉強しましたので備忘までに…(そんなことも分かっていない現状orz)
Gradleマルチプロジェクト
お題の内容にてまぁまぁ苦戦していたので備忘のため記載
Gradleではプロジェクトを分けて管理する際には以下の2パターンあるみたい
ですね。
・Gradle multi project
・Composite build
現場あるあるだと思いますが、開発者が大人数だったり、スクラッチでのシステムが
大規模だった時には分けるのがスタンダードなんでしょうか。
今時の仕組みではどうしているのか全く知見はありませんが…
そういえば、前職での開発環境では分離していたように思います。
※下流にいなかったので詳しくは知らない
当時はMavenでそれぞれにプロジェクトを作成して動かしていたみたいな…
ただ、オンライン環境ではどうしていたのか不明。
ドメインごとにRootを定義して、その後サブドメインごとにWarを作成していたのか…?ただ、プロジェクトを分けるとTomcat上で同一の仮想アプリケーション
で稼働するのではなく、別れちゃうような(ポートも分離)
うーん
今回Gradle multi projectにてリファクタリング中のプロジェクトを分割しました。
やった事
既存プロジェクトを以下見つけた方法でRootProjectからSubProjectに分離。
上記内容でひとまず分割。
その後、Spring Inisializerでプロジェクトファイルを作成し、不要なもの
(gradlew .gradle 等のディレクトリ)
Subproject ファイルを用意してRoot配下においてからは、以下指示通り「gradle settings」や「build gradle kts」ファイルにサブプロジェクトの定義を設定
Gradle Buildで無事ビルドは完了しました!
そして実際ビルドしてみると、各サブディレクトリ配下の「.build」ファイルの中に
無事Jarファイルが出来上がっていました。
これでよかったのか…
※あと、モジュールの分割もできるようですね。この使い方はよくわかっていません。
[Tomcat] Tomcatへのwebアプリのデプロイ方法(jarファイル編) | 迷走男子!!
主にエンジニア系の内容を徒然
齢30半ば、今更にてブログはじめました。
エンジニアをやっていますので、その内容を日記につけていこうと思います。
※自己紹介は省きます。プロフィール参照
とりあえず環境を公開すると・・・
・作業用PC
Mac Book Pro M1 2020年モデル
Dell Windows10 PC(会社のを拝借)
・サーバ環境
自作サーバを2021年春にて人生初で作成
→Ubuntu21 で構築、KVMで仮想化してます。
初なんであんまり背伸びせず、スペックは対して積んでません。
インフラ系は弱いです。。汗
まぁ、アプリも素人同然なんですけどね
今は仕事のプロジェクトで開発したシステムをリファクタリングする形で自分で塗り絵してます。
開発詳細…
サーバーサイド
・言語:Java 11 Kotlin(Gradle、SpringBoot、Exposed等AF使用)
・IDE:JetBrain製 InteriJ
フロントエンド
・JavaScript(Vueでの開発を実践中)
こんな感じです。ひとまずここまでで…
blog 開設しました。
よろしくお願いします。
主にIT系の記事を書いていこうと思います。
そのほか趣味の事とかも記録していこうと思っています。
徐々に自己紹介も展開していきます。
まずはこの辺で。