我想在被测类中 stub 一个私有(private)方法。我正在使用 junit 5
。我之前使用过 powermock
来实现这一点。不幸的是,junit 5
不适用于 powermock
。
我已经简化了示例以更好地解释问题。我的类具有在公共(public)方法中调用的私有(private)辅助方法。如下所示:
public class Service {
private Repository repository;
public Object findById(String id) {
Object object = repository.findById(id);
object = verify(object);
return object;
}
private Object verify(Object object) {
//removed for simplicity
return object;
}
}
现在我想对 Service
的方法 findById
进行单元测试。我使用带有 mockito 的 junit 5 来实现服务类的单元测试。
public class ServiceUTest {
@InjectMocks
private Service service;
@Mock
private Repository repository;
@BeforeEach
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testFindById() {
when(repository.findById(Mockito.any())).thenReturn(new Object());
//how to stub verify method
}
}
对于解决此问题的任何帮助和指导,我将不胜感激。
问候,
最佳答案
您可以监视服务并使用 PowerMockito
来定义 verify()
方法的行为。
public class ServiceUTest {
@InjectMocks
private Service service;
@Mock
private Repository repository;
@BeforeEach
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testFindById() {
// Arrange
Service spyService = spy(service);
when(repository.findById(Mockito.any())).thenReturn(new Object());
PowerMockito.when(spyService, "verify", any()).thenReturn(expectedObjectReturn);
// Act
Object actual = spyService.findById("id");
// Assert
}
}
关于java - 在 junit 5 中测试类中的 stub 私有(private)方法,PowerMock 不适用于 JUnit5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62093143/