在我对正在测试的类(ConsumerKafkaCardReplacementService)做了一些更改之后,我得到了很多这样的错误:
ConsumerKafkaCardReplacementServiceTest > processCardReplacementSuccessfulWithCIDCredit FAILED
org.mockito.exceptions.base.MockitoException:
For com.api.loyalty.event.listener.global.RewardsProductConfigService, static mocking is already registered in the current thread
To create a new mock, the existing static mock registration must be deregistered
at com.api.loyalty.event.listener.service.ConsumerKafkaCardReplacementServiceTest.processCardReplacementSuccessfulWithCIDCredit(ConsumerKafkaCardReplacementServiceTest.java:308)
字符串
对于静态mocking,每个mock都在测试方法结束时关闭:
service = Mockito.mockStatic(RewardsProductConfigService.class); <-- (line 308)
service.when(()->RewardsProductConfigService.queryRewardsProductConfigMap(Mockito.any(), Mockito.any())).thenReturn(Optional.of(TestUtil.getCSSSCProductDetails()));
...
service.close();
型
未对RewardsProductConfigService类、queryRewardsProductConfigMap方法、TestUtil类、getCSSSCProductDetails方法进行更改。也未对测试类和测试方法进行更改。
我尝试用以下代码注解测试类:
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
型
以及:
@TestMethodOrder(MethodOrderer.MethodName.class)
型
这个问题仍然存在,知道为什么吗?
1条答案
按热度按时间sqyvllje1#
有两种方法可以解决它:
尝试在Try中声明MockedStatic,如下所示:
字符串
或尝试以下操作:
型
参考https://www.reddit.com/r/javahelp/comments/xpsk5x/how_can_i_resolve_a_static_mocking_is_already/