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はしっかりスキルとして修得しておかないとなんともならないと思ってます。