2016-10-19 14 views
0

私はJUnitのテストケースを書く必要があるメソッドを持っています。プロジェクトのメイン処理メソッドを呼び出すだけで、それ以外は何もしません。また、メイン処理メソッドの戻り値の型もvoidです。JUNIT voidメソッドのテストケース

このような「方法1」はどのようにテストしますか?

クラスを考えると
public void method1() { 
    obj1.mainProcessingMethod(): 
} 
+0

のようなものを使用することができますか?メソッドの結果/結果は何ですか?それはファイルを書きますか?それはデータベースを変更しますか? –

+0

これは別のメソッドを呼び出すだけです。他には何もありません – earl

+0

まあ、_something_ –

答えて

2

:このクラスの試験で

public class A { 
    private Obj obj1; 

    public void method1() { 
     obj1.mainProcessingMethod(); 
    } 

    public void setObj1(Obj obj1) { 
     this.obj1 = obj1; 
    } 
} 

、テストするための唯一のものは、方法obj1.mainProcessingMethod()が正確に一度だけ呼び出されたかどうかを検証することでしょう。

これはMockitoで実現できます。ここで

import org.junit.Test; 
import org.mockito.Mockito; 

public class ATest { 
    private Obj obj1 = Mockito.mock(Obj.class); 
    private A a = new A(); 

    @Test 
    public void testMethod1() { 
     a.setObj1(obj1); 
     a.method1(); 
     Mockito.verify(obj1).mainProcessingMethod(); 
    } 
} 

あなたは、クラスObjのモックオブジェクトを作成Aのインスタンスに注入し、後でそれが記録されたメソッド呼び出しをチェックするためにモックオブジェクトを使用します。

+1

もしなければなりません。疑似オブジェクトを挿入するのは良いアプローチです: '@Mock Obj obj1; @InjectMock A a'' –

+0

@SergiiGetman、良い点ですが、このテストクラスには、この作業を行うために '@RunWith(MockitoJUnitRunner.class) 'というアノテーションを付ける必要があります。 –

1

mainProcessingMethod():メソッドがオブジェクトobj1に対して呼び出されたことを確認する必要があります。

あなたはメソッドが何をするん

Mockito.verify(yourMockObject); 
関連する問題