2017-02-20 3 views
0

は、私はと私のサービスコードのテストケースを書いてみました。JUnitのMockitoフレームワーク

- :lang.NullPointerException

は次にように二つの別々のステートメントでメソッド呼び出しを分割しようとしました

しかし、Mockitoのためにオブジェクトキャスト例外がまだSuperClassObjectを返していますが、コードがChildClassオブジェクトにキャストされています。現在のJavaコードはJUnitのテストケースでテストするために100%互換性がありますか、何か不足しています。

+0

ここで、 'employeeInstance'のモックを作成しますか? –

+0

@Mockを使用するEmployeeInstance employeeInstance;テストクラスで。 –

+0

あなたは 'thenReturn(employeeInstance)'を持っていますが、次の行では 'employeeInstanceMocked'を使用しています。これは間違っていますか?あなたはこれらが同じであることを望みます。 –

答えて

0

mockedオブジェクトを使用するには、mockedクラスを使用する必要があります。あなたがダオの参照などの実際のクラスの振る舞いを望むなら、あなたはスパイを使う必要があります。

JUnitは:

ChildClass childClass = Mockito.spy(new ChildClass()); 
+0

これをテストしましたか、それとも単なる推測ですか? –

1

あなたはMockitoでこれを行うことができます。 documentationから例:

Foo mock = mock(Foo.class, RETURNS_DEEP_STUBS); 

// note that we're stubbing a chain of methods here: getBar().getName() 
when(mock.getBar().getName()).thenReturn("deep"); 

// note that we're chaining method calls: getBar().getName() 
assertEquals("deep", mock.getBar().getName()); 

しかし、それはLaw of Demeterの違反に起因する悪い習慣であるドキュメントに記載のように。

関連する問題