0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Spring/Java】実装中に知ったアノテーションたち1

Posted at

はじめに

最近はSpringBootという便利なフレームワークを使用して日々業務を進めています。(それもひと段落つきそうですが)
まずは第一弾として、ここ最近で知ったアノテーションをまとめておきたいと思います。
※ほんの一部になる事ご承知おきください

** 対象者 **

  • アノテーションについて学習を進めたい方

❓Java のアノテーションとは

改めてアノテーションについて。
→ アノテーションは、クラス、メソッド、フィールド、パラメータなどに付けられる "補助的なメタ情報"
→ ただのマーカーとして機能するもの(例:@Override)もあれば、値を持つもの(例:@DisplayName("説明"))もある。
→ ランタイムで読み取られて動作を制御したり、コンパイル時チェックやコード生成に使われたりする。
→ Spring やテストフレームワーク(JUnit, Mockito など)は、アノテーションを見て「このクラスはテストだ」「モックを挿入してほしい」などの仕組みを自動で適用している

🌱実装中に知ったアノテーション

アノテーション 説明
@Test そのメソッドがテストメソッドであることを表す。
@DisplayName テストクラスやテストメソッドに「人間向けの説明名」を与える
@DisplayNameGeneration テストクラスやネストクラスにおける、表示名の自動生成ルールを指定する
@Nested クラスの中にネストされたテストクラスを持たせる(テストグループ化)
@Mock 依存オブジェクトを "偽物(モック)" として振る舞わせる
@InjectMocks モックやスパイされたオブジェクトを、このテスト対象のクラスに「注入(inject)」する
@SpringBootTest Spring Boot のアプリケーションコンテキストを立ち上げてテストを実行する

🌱補足説明

  • @SpringBootTest を付けると、Spring Boot の設定や Bean 定義などすべて読み込むので、本番に近い形でテストできる。だがそのぶん起動コストが高くなるという制約がある
     

  • Mockito の @InjectMocks は、自動的にテスト対象クラスのインスタンスを作り、モックされた依存を注入してくれる。ただし、「どのコンストラクタを使うか」「依存がモックとして用意されていない変数があれば null になる可能性がある」などの制約がある
     

  • @DisplayNameGeneration@DisplayNameがあった際、@DisplayNameが優先される

  • @DisplayNameGenerationの例👇

    - ReplaceUnderscores:アンダースコアをスペースに変換:test_name → test name  
    - Standard:デフォルト(メソッド名そのまま):testMethod() → testMethod()
    - Simple:メソッド名のみ()なし:testMEthod() → testMethod
    - IndicativeSentence:クラス名とメソッド名を組み合わせ:getCouponsList, クーポンリスト取得
    

💡参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?