2016-11-02 25 views
1

私はユニットテストケースをMockitoで記述しようとしています。以下は私のサンプルコードです:Mockitoオブジェクトがnullの場合

class A { 

    Attr1 attr1; 
    Attr2 attr2; 


    public boolean methodToBeTested(String str) { 

     Boolean status1 = attr1.doSomething(); 

     TempObject temp = attr2.create(); 

     Boolean result = anotherMethod() && temp.doAnotherThing(); 

    } 

    boolean anotherMethod() { 

     return true; 
    } 
} 

私のテストクラス:

class ATest extends AbstractTestCase { 

    @Mock 
    Attr1 attr1; 

    @Mock 
    Attr2 attr2; 

    @Mock 
    TempObject tempObj; 


    A obj;  // This is not mocked 

    @Before 
    public void setup() { 

      obj = new A(attr1, attr2); 
    } 


    @Test 
    public void testMethodToBeTested() { 

      Mockito.when(obj.attr1.doSomething()).thenReturn(true); 
      Mockito.when(obj.attr2.create()).thenReturn(tempObj); 

      Mockito.when(tempObj.doAnotherThing()).thenReturn(true); 

      Assert.assertTrue(obj.methodToBeTested(someString)) 

    } 
} 

それはtemp.doAnotherThing()を実行しようとしたとき、私はヌル例外を取得しますが。 モックテストでは、Mockito.doReturn(tempObj).when(obj.attr2).create() inplaceの代わりにMockito.when(obj.attr2.create()).thenReturn(tempObj)

を使って試してみましたが、これはどちらでも役に立ちません。

私はオブジェクトtempObjを誤って嘲笑していますか?

+0

あなたは 'tempObj'を意味ですか? –

+0

はい。私は模擬されたオブジェクトをテストクラスではtempObj、実際のクラスではtempとして命名しました。 – learningMyWayThru

答えて

1

あなたは@Mock注釈がMockitoJUnitRunnerを使用して、あなたのクラスをマークするようにしてください使用している場合:

@RunWith(MockitoJUnitRunner.class) 
public class Test { 
    @Mock 
    private Foo foo; // will be instantiated by the runner rather than left null in OP question 
関連する問題