私は、注入のためのmockitoで簡単なユニットテストを設定しようとしています。このプロジェクトは、私の友人が彼のプロジェクトのために作っているテストの概念証明です。ユニットテストをMockitoでセットアップする
私が抱えている問題は、「Hello World」ではなく、私が呼び出しているメソッドからnullが返されることです。また私がデバッグするときには、という名前のクラスに入っています。このクラスは、IndexOutOfBoundsExpetion
を引数として持つintercept
というメソッドを呼び出しています。
誰かが間違っていることを知っていますか?
DAO:
@Stateless
public interface DAO {
public String helloWorld();
}
DAOの実装:
@Stateless
public class DAOImpl implements DAO{
public String helloWorld() {
return "Hello World";
}
}
サービス:
@Stateless
public class Service {
@Inject
private DAO dao;
public String helloWorld() {
return dao.helloWorld();
}
}
テスト:
public class RandomTest {
@InjectMocks
Service service = new Service();
@Mock
DAO dao;
@Before
public void init(){
MockitoAnnotations.initMocks(this);
}
@Test
public void testTest() {
assertEquals("Hello World", service.helloWorld());
}
}
ちなみに、私は(それが重要かどうかわからないが、とにかくそれを言う)のIntelliJを使用しています。
まず、 '@InjectMocks'はクラスのインスタンスを作成し、 '@Mock'(または '@Spy')アノテーションで作成されたモックをこのインスタンスに挿入します。したがって、beforeメソッドを削除しようとします。第2に、 '@mock'クラスはクラスを拡張し、メソッドを実装しないクラスで、(...)でスタブする必要があるメソッドの動作を指定します。thenReturn()voidメソッドをスタブしている場合は、 '@Spy'を使用してください。最後に、Testクラスでランナー '@RunWith(MockitoJUnitRunner.class)'アノテーションを使用する必要があります。 – LazerBanana
@ Krystian_K Yoav Gur(彼が削除したばかり)のソリューションと組み合わせたソリューションは、ありがとう! –
@ Krystian_Kあなたのコメントを回答にすると、私はそれを受け入れる –