我不想再用powermock了。因为junit5开始嘲笑静态类了。所以我试着去掉powermock方法。
当我使用PowerMock时,我可以很容易地发现一个具有私有构造函数的类,然后我调用静态方法。
这是我的代码的一部分(当我使用PowerMock时)
@RunWith(PowerMockRunner.class)
@PrepareForTest(MessageValidationUtils.class)
public class MessageValidationServiceTest {
@Mock
private CheckpointCustomerService checkpointCustomerService;
@Mock
private ProductClientService productClientService;
@Before
public void setUp() {
MockitoAnnotations.openMocks(this);
PowerMockito.spy(MessageValidationUtils.class);
}
在我创建MessageValidationUtils.class的间谍对象后,我测试了以下内容:
when(MessageValidationUtils.validateTelegramKeyMap(messageProcessDto.getMessageMessageType(),
messageProcessDto.getMessageKeyValueMap())).thenAnswer((Answer<Boolean>) invocation -> true);
经过一些研究,我找不到任何与间谍类,有一个私有构造函数和静态方法。
1条答案
按热度按时间gojuced71#
在Mockito中定义
mockStatic
时,您可以指定默认执行Mockito.withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS)
的设置。这样,您的静态模拟将像Spy
一样工作。让我们创建一个简单的
Utils
类来进行测试。对
method2
进行模拟,并执行method1
和method3
的实际执行您的类示例:
更新日期:
在
@BeforeEach
中使用mockStatic
的示例更新日期:
Mockito没有提供创建静态
Spy
的方法,但是您可以定义自己的实用程序并在那里实现spy静态定义。这样,您的测试将看起来更清晰: