Şu anda Mockito çerçevesini çalışıyorum ve Mockito kullanarak birkaç test vakası oluşturdum. Yapmam gereken tek şey @RunWith(MockitoJUnitRunner.class)
ile benim test sınıfını açıklama ya @Before
yöntemde MockitoAnnotations.initMocks(this);
kullanmaktır - Ama sonra yerine mock (SomeClass .class) çağırma I @Mock
ve @InjectMocks
kullanabileceği okuyun.@Mock ve @InjectMocks kullanarak
Ama işe yaramıyor - @Mock
çalışmıyor! İşte benim 2 kodları revizyonları - biri ek açıklamaları kullanarak ve bir olmadan.
Neyi yanlış yapıyorum?
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
}
Dediğim gibi - bu iş harika. Ama şu alışkanlık:
@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;
}
}
ben eksik: Burada
@RunWith(MockitoJUnitRunner.class)
public class ReportServiceImplTestMockito {
@Mock
private TaskService mockTaskService;
@InjectMocks
private ReportServiceImpl service;
// Some tests
}
Ve ReportServiceImpl
sınıftır?
İlk bakışta bana iyi görünüyor. Senin için tam olarak ne yanlış gidiyor? –
@Noam Doğru ithalatı kullandığınızdan emin misiniz? – Brice
David - Bir NullPointerException alıyorum. Ve Brice, doğru ithalatı kullandığımı düşünüyorum - işte burada 'import org.jmock.auto.Mock; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.MockitoAnnotations; import org.mockito.runners.MockitoJUnitRunner; ' – Noam