UT单元测试报错:

Unnecessary stubbings detected in test class: XXXApiTest
Clean & maintainable test code requires zero unnecessary code.
Following stubbings are unnecessary (click to navigate to relevant line of code):
  1. -> at com.xx.web.api.order.XXXApiTest.XX(XXXApiTest.java:559)
  ...
Please remove unnecessary stubbings or use 'lenient' strictness. More info: javadoc for UnnecessaryStubbingException class.
	at org.mockito.internal.runners.StrictRunner.run(StrictRunner.java:53)
	at org.mockito.junit.MockitoJUnitRunner.run(MockitoJUnitRunner.java:163)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)

原因:
你用 Mockito 打桩(when (…))了一些方法,但测试运行时根本没用到这些打桩。
Mockito 开启了严格校验模式,发现多余的打桩就直接抛异常,导致测试失败。

解决方法:
把头注解

@RunWith(MockitoJUnitRunner.class)

换成:

@RunWith(MockitoJUnitRunner.Silent.class)

@RunWith(MockitoJUnitRunner.Lenient.class)

更多推荐