私は現在Mockitoフレームワークを研究中で、私はMockitoを使っていくつかのテストケースを作成しました。 しかし、私が代わりにモック(工assの.class)を呼び出すの私は@Mock
と@InjectMocks
を使用できることを読んで - 私がする必要がある唯一のものは@RunWith(MockitoJUnitRunner.class)
で私のテストクラスに注釈を付けたり@Before
方法でMockitoAnnotations.initMocks(this);
を使用することです。@Mockと@InjectMocksを使用する
しかし、動作しません - それは@Mock
が動作しないようです! ここに私の2つのコードリビジョンがあります - 1つは注釈を使用し、もう1つはコメントなしです。
私は間違っていますか?
public class ReportServiceImplTestMockito {
private TaskService mockTaskService; // This is the Mock object
private ReportServiceImpl service;
@Before
public void init(){
service = new ReportServiceImpl();
mockTaskService = mock(TaskServiceImpl.class);
service.setTaskServiceImpl(mockTaskService);
}
/// ...
Some tests
}
私が言ったように - この作品は素晴らしいです。 しかし、文句を言わない、以下:
@RunWith(MockitoJUnitRunner.class)
public class ReportServiceImplTestMockito {
@Mock
private TaskService mockTaskService;
@InjectMocks
private ReportServiceImpl service;
// Some tests
}
そして、ここではReportServiceImpl
クラスです:
@Service
public class ReportServiceImpl implements ReportService {
@Autowired
private TaskService taskServiceImpl;
public ReportServiceImpl(){}
public ReportServiceImpl(TaskService taskService){
this.taskServiceImpl = taskService;
}
public void setTaskServiceImpl(TaskService taskServiceImpl) {
this.taskServiceImpl = taskServiceImpl;
}
}
私は何をしないのですか?
一見すると、私にはよく見えます。あなたにとって何が間違っているのですか? –
@Noam正しい輸入品を使用していますか? – Brice
David - NullPointerExceptionが発生しています。そしてBrice、私は正しい輸入品を使用していると信じています - ここでは 'import org.jmock.auto.Mock; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.MockitoAnnotations; import org.mockito.runners.MockitoJUnitRunner; ' – Noam