アーシの毎日インプット

毎日1つ以上学習する。学習した内容を公開する。を目標に自分のスキルアップを目指します。

【Java】@Spyでテストクラスの一部メソッドをモックする

スポンサードリンク

JUnitのモックのお話です。

 

基本的にJUnitを使ったテストでは、下記のようにテスト対象のクラスに、そこから呼び出されるクラスのモックを注入(inject)します。

 

public ClassATest {
    @Injectmocks
    ClassA aCls;

    @Mock
    ClassB bCls;

(以下略)

 

でも、クラス単位でしかモックできないと、テスト対象のクラスの中にある特定のメソッドをモック化して使用したい場合、困りますよね。

 

そんな時はクラス中の一部をモックする@Spyアノテーションの書いてあげると解決できます。

 

public ClassATest {
    @Spy
    @Injectmocks
    ClassA aCls;

(以下略)

 

テスト対象のクラスに2つのアノテーションがついていますが、問題ありません。

 

@Mockは宣言した時点でクラスそのものをモックしてしまいますが、@Spyであればメソッドに対して処理を書いてあげた段階でそのメソッドのみをモックしてくれるため、JUnitを使ったテストの幅が広がります!

 

 

----------

ゴールデンウィーク中に、JUnitに少しは詳しくなりたいです。

Java開発は感覚でなんとかなりますが、JUnitはしっかりスキルとして修得しておかないとなんともならないと思ってます。

 

【アーシの原点】

【頭を鍛える迷路集】


スポンサードリンク