gpt4 book ai didi

java - 在 junit 5 中测试类中的 stub 私有(private)方法,PowerMock 不适用于 JUnit5

转载 作者:行者123 更新时间:2023-12-04 04:08:49 27 4
gpt4 key购买 nike

我想在被测类中 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com