[exceptions]idea 运行测试出 Failed to resolve junit-platform-launcher

IDEA2021.1在电脑未正常关闭后报错,与Junit4.11和Junit5的冲突有关。升级到2021.2版本可解决问题,因为Junit4.11不再被支持。调试时发现jetty包中的类冲突。不建议升级过高版本的IDEA以避免Maven配置调整。一些帖子提出通过添加特定包引用来解决此问题。

问题

我用的idea版本是2021.1 报错截图类似下图。我忘截图了。情况是一次电脑没电关机后再测试就一直报错了。
在这里插入图片描述

解决方法

是idea升级到2021.2就好了。方法来源于youtrack

帖子最后说“issue with junit 4.11 must be resolved in IDEA 2021.2 EAP: junit 5 doesn’t support junit 4.11 and most probably your added junit 4.13.2 land after junit 4.11 (bundled in another jar) on the classpath. Sorry for the inconvenience”(关于junit 4.11的问题必须在IDEA 2021.2 EAP中解决:junit 5不支持junit 4.11,而且很可能你在classpath上junit 4.11(捆绑在另一个jar中)之后加入了junit 4.13.2。很抱歉给你带来的不便) 跟这个发帖人说的细节相关的比较多。但是还是注意到需要升级。

补充信息

1 junit

idea 再启动时,把项目的测试框架认为成junit5了。 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,但我项目本身用的是junit4. 所以本来不用junt-platform,后来需要了。from 51cto的文章

2 如何debug

org.junit.platform.commons.JUnitException and org.junit.jupiter.api.Test, 用双shift快捷键去查这两个类,看来自什么包。后来发现是来自一个其它包引入的jetty包里。是直接把 .class给打包进去了。from youtrack

3 不要升级太高版本的idea

因为太高版本的内置的maven升级,还得调maven的配置。

4 其它经验

也有很多帖子写了最后给maven里加上包引用解决了。不想冒别的风险,直接引入包也行。

11:41:33.839 [main] ERROR com.tplink.smb.omada.common.util.pii.OmadaPIIUtil - No AESStrategy instance has been inited. java.lang.IllegalStateException: No AESStrategy instance has been inited. at com.tplink.nbu.common.pii.strategy.AESStrategy.getInstance(AESStrategy.java:76) ~[pii-2.1.76.jar:?] at com.tplink.nbu.common.pii.utils.PIIMaskUtil.encrypt(PIIMaskUtil.java:47) ~[pii-2.1.76.jar:?] at com.tplink.smb.omada.common.util.pii.OmadaPIIUtil.encrypt(OmadaPIIUtil.java:255) [omada-common-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.domain.model.device.DeviceMac.toString(DeviceMac.java:48) [classes/:?] at java.base/java.lang.String.valueOf(String.java:4543) [?:?] at org.mockito.internal.matchers.text.ValuePrinter.descriptionOf(ValuePrinter.java:151) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.text.ValuePrinter.print(ValuePrinter.java:78) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.Equals.describe(Equals.java:36) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.Equals.toString(Equals.java:32) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.text.MatcherToString.toString(MatcherToString.java:33) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.text.MatchersPrinter.applyPrintSettings(MatchersPrinter.java:50) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.text.MatchersPrinter.getArgumentsLine(MatchersPrinter.java:19) [mockito-core-5.14.2.jar:?] at org.mockito.internal.reporting.PrintSettings.print(PrintSettings.java:60) [mockito-core-5.14.2.jar:?] at org.mockito.internal.invocation.InvocationMatcher.toString(InvocationMatcher.java:75) [mockito-core-5.14.2.jar:?] at org.mockito.internal.exceptions.Reporter.createWantedButNotInvokedMessage(Reporter.java:422) [mockito-core-5.14.2.jar:?] at org.mockito.internal.exceptions.Reporter.wantedButNotInvoked(Reporter.java:417) [mockito-core-5.14.2.jar:?] at org.mockito.internal.verification.checkers.MissingInvocationChecker.checkMissingInvocation(MissingInvocationChecker.java:41) [mockito-core-5.14.2.jar:?] at org.mockito.internal.verification.Times.verify(Times.java:37) [mockito-core-5.14.2.jar:?] at org.mockito.internal.verification.MockAwareVerificationMode.verify(MockAwareVerificationMode.java:30) [mockito-core-5.14.2.jar:?] at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:75) [mockito-core-5.14.2.jar:?] at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29) [mockito-core-5.14.2.jar:?] at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:34) [mockito-core-5.14.2.jar:?] at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:82) [mockito-core-5.14.2.jar:?] at org.mockito.internal.creation.bytebuddy.MockMethodAdvice.handle(MockMethodAdvice.java:134) [mockito-core-5.14.2.jar:?] at com.tplink.smb.omada.manager.device.domain.model.message.set.IncreSettingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(IncreSettingService.java:79) [classes/:?] at com.tplink.smb.omada.manager.device.domain.model.message.set.DeviceSetMsgServiceTest.testSendAllIncrementalSetMsgAsync_withValidData(DeviceSetMsgServiceTest.java:196) [test-classes/:?] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[?:?] at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:767) [junit-platform-commons-1.11.4.jar:1.11.4] at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(TestMethodTestDescriptor.java:217) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) [junit-platform-engine-1.11.4.jar:1.11.4] at java.base/java.util.ArrayList.forEach(ArrayList.java:1604) [?:?] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) [junit-platform-engine-1.11.4.jar:1.11.4] at java.base/java.util.ArrayList.forEach(ArrayList.java:1604) [?:?] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:198) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:169) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:93) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:58) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:141) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:57) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:63) [junit-platform-launcher-1.11.4.jar:1.11.4] at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57) [junit5-rt.jar:?] at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) [junit-rt.jar:?] at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) [idea_rt.jar:?] at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) [junit-rt.jar:?] at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) [junit-rt.jar:?] at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) [junit-rt.jar:?] 11:41:33.848 [main] ERROR com.tplink.smb.omada.common.util.pii.OmadaPIIUtil - No AESStrategy instance has been inited. java.lang.IllegalStateException: No AESStrategy instance has been inited. at com.tplink.nbu.common.pii.strategy.AESStrategy.getInstance(AESStrategy.java:76) ~[pii-2.1.76.jar:?] at com.tplink.nbu.common.pii.utils.PIIMaskUtil.encrypt(PIIMaskUtil.java:47) ~[pii-2.1.76.jar:?] at com.tplink.smb.omada.common.util.pii.OmadaPIIUtil.encrypt(OmadaPIIUtil.java:255) [omada-common-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.domain.model.device.DeviceMac.toString(DeviceMac.java:48) [classes/:?] at java.base/java.lang.String.valueOf(String.java:4543) [?:?] at org.mockito.internal.matchers.text.ValuePrinter.descriptionOf(ValuePrinter.java:151) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.text.ValuePrinter.print(ValuePrinter.java:78) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.Equals.describe(Equals.java:36) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.Equals.toString(Equals.java:32) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.text.MatcherToString.toString(MatcherToString.java:33) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.text.MatchersPrinter.applyPrintSettings(MatchersPrinter.java:50) [mockito-core-5.14.2.jar:?] at org.mockito.internal.matchers.text.MatchersPrinter.getArgumentsBlock(MatchersPrinter.java:24) [mockito-core-5.14.2.jar:?] at org.mockito.internal.reporting.PrintSettings.print(PrintSettings.java:62) [mockito-core-5.14.2.jar:?] at org.mockito.internal.invocation.InvocationMatcher.toString(InvocationMatcher.java:75) [mockito-core-5.14.2.jar:?] at org.mockito.internal.exceptions.Reporter.createWantedButNotInvokedMessage(Reporter.java:422) [mockito-core-5.14.2.jar:?] at org.mockito.internal.exceptions.Reporter.wantedButNotInvoked(Reporter.java:417) [mockito-core-5.14.2.jar:?] at org.mockito.internal.verification.checkers.MissingInvocationChecker.checkMissingInvocation(MissingInvocationChecker.java:41) [mockito-core-5.14.2.jar:?] at org.mockito.internal.verification.Times.verify(Times.java:37) [mockito-core-5.14.2.jar:?] at org.mockito.internal.verification.MockAwareVerificationMode.verify(MockAwareVerificationMode.java:30) [mockito-core-5.14.2.jar:?] at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:75) [mockito-core-5.14.2.jar:?] at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29) [mockito-core-5.14.2.jar:?] at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:34) [mockito-core-5.14.2.jar:?] at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:82) [mockito-core-5.14.2.jar:?] at org.mockito.internal.creation.bytebuddy.MockMethodAdvice.handle(MockMethodAdvice.java:134) [mockito-core-5.14.2.jar:?] at com.tplink.smb.omada.manager.device.domain.model.message.set.IncreSettingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(IncreSettingService.java:79) [classes/:?] at com.tplink.smb.omada.manager.device.domain.model.message.set.DeviceSetMsgServiceTest.testSendAllIncrementalSetMsgAsync_withValidData(DeviceSetMsgServiceTest.java:196) [test-classes/:?] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[?:?] at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:767) [junit-platform-commons-1.11.4.jar:1.11.4] at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$8(TestMethodTestDescriptor.java:217) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) [junit-jupiter-engine-5.11.4.jar:5.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) [junit-platform-engine-1.11.4.jar:1.11.4] at java.base/java.util.ArrayList.forEach(ArrayList.java:1604) [?:?] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) [junit-platform-engine-1.11.4.jar:1.11.4] at java.base/java.util.ArrayList.forEach(ArrayList.java:1604) [?:?] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) [junit-platform-engine-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:198) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:169) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:93) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:58) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:141) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:57) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47) [junit-platform-launcher-1.11.4.jar:1.11.4] at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:63) [junit-platform-launcher-1.11.4.jar:1.11.4] at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57) [junit5-rt.jar:?] at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) [junit-rt.jar:?] at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) [idea_rt.jar:?] at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) [junit-rt.jar:?] at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) [junit-rt.jar:?] at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) [junit-rt.jar:?] Wanted but not invoked: settingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc( OmadacId(1), DeviceMac() ); -> at com.tplink.smb.omada.manager.device.domain.model.message.set.IncreSettingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(IncreSettingService.java:79) Actually, there were zero interactions with this mock. Wanted but not invoked: settingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc( OmadacId(1), DeviceMac() ); -> at com.tplink.smb.omada.manager.device.domain.model.message.set.IncreSettingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(IncreSettingService.java:79) Actually, there were zero interactions with this mock. at com.tplink.smb.omada.manager.device.domain.model.message.set.IncreSettingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(IncreSettingService.java:79) at com.tplink.smb.omada.manager.device.domain.model.message.set.DeviceSetMsgServiceTest.testSendAllIncrementalSetMsgAsync_withValidData(DeviceSetMsgServiceTest.java:196) at java.base/java.lang.reflect.Method.invoke(Method.java:565) at java.base/java.util.ArrayList.forEach(ArrayList.java:1604) at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
最新发布
11-04
你遇到的错误是: ``` Wanted but not invoked: settingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(...) Actually, there were zero interactions with this mock. ``` 并且日志中还现了: ``` ERROR com.tplink.smb.omada.common.util.pii.OmadaPIIUtil - No AESStrategy instance has been inited. java.lang.IllegalStateException: No AESStrategy instance has been inited. ``` --- ### 🔍 错误原因分析 #### 1. `Wanted but not invoked` 错误 这说明你在测试中使用了 `verify(settingService).getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(...)`,但该方法在测试过程中 **从未被调用**。 可能原因包括: - 被测方法中没有调用 `settingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(...)`。 - 条件判断未满足,导致跳过了调用。 - `settingService` 没有被正确注入或 mock。 #### 2. `No AESStrategy instance has been inited` 错误 这个异常说明某个类(如 `DeviceMac`)的 `toString()` 方法中调用了 PII 加密工具,而加密所需的 `AESStrategy` 没有被初始化,导致测试失败。 这通常发生在 Mockito 打印参数(如 `verify(...)`)时调用对象的 `toString()` 方法。 --- ### ✅ 解决方案 --- ## ✅ 方案一:确保 `settingService` 被正确 mock 并调用 ### 1. 确保 mock 已创建并注入 ```java @Mock private SettingService settingService; @InjectMocks private IncreSettingService increSettingService; ``` 并在测试初始化中加入: ```java @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); } ``` ### 2. 确保调用逻辑被触发 检查 `increSettingService.sendAllIncrementalSetMsgAsync(deviceImage)` 的实现,确保它确实调用了: ```java settingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(omadacId, deviceMac); ``` ### 3. 添加 `verify(...)` 时使用合适的参数匹配器 ```java verify(settingService).getTop10ByOmadacIdAndDeviceMacOrderByIdAsc( eq(omadacId), eq(deviceMac) ); ``` 或者使用 `any()` 进行宽松匹配: ```java verify(settingService).getTop10ByOmadacIdAndDeviceMacOrderByIdAsc( any(OmadacId.class), any(DeviceMac.class) ); ``` --- ## ✅ 方案二:避免 `toString()` 引发异常 由于 `DeviceMac.toString()` 中调用了 PII 加密工具,而测试中 Mockito 会调用 `toString()` 来打印参数,导致异常。 ### 解决办法: #### ✅ 方法 1:在测试中初始化 `AESStrategy` 在测试类中添加初始化逻辑: ```java @BeforeEach void initAESStrategy() { AESStrategy.initInstance(new YourAESStrategyImpl()); } ``` 确保 `YourAESStrategyImpl` 是一个测试可用的实现。 #### ✅ 方法 2:重写 `DeviceMac.toString()` 为测试版本 在测试中使用 Mockito 的 `mockingDetails` 或 `@Mock` 来 mock `toString()`: ```java DeviceMac deviceMac = mock(DeviceMac.class); when(deviceMac.toString()).thenReturn("test:mac"); ``` 或者使用 `@Mock(answer = Answers.RETURNS_DEEP_STUBS)`: ```java @Mock(answer = Answers.RETURNS_DEEP_STUBS) private DeviceMac deviceMac; ``` #### ✅ 方法 3:避免 Mockito 打印参数 如果你不关心参数内容,可以使用 `any()`: ```java verify(settingService).getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(any(), any()); ``` --- ### ✅ 示例修复后的测试代码片段 ```java @ExtendWith(MockitoExtension.class) class IncreSettingServiceTest { @InjectMocks private IncreSettingService increSettingService; @Mock private SettingService settingService; @Mock private DeviceImage deviceImage; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private DeviceMac deviceMac; @Mock private OmadacId omadacId; @BeforeAll static void initPII() { AESStrategy.initInstance(new TestAESStrategy()); // 测试用的实现 } @Test void testSendAllIncrementalSetMsgAsync_withValidData() { when(deviceImage.getOmadacId()).thenReturn(omadacId); when(deviceImage.getMacAddress()).thenReturn(deviceMac); when(deviceImage.isIncrementalConfigStatus()).thenReturn(false, true, false); when(settingService.getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(any(), any())) .thenReturn(Collections.emptyList()); increSettingService.sendAllIncrementalSetMsgAsync(deviceImage); verify(settingService).getTop10ByOmadacIdAndDeviceMacOrderByIdAsc(eq(omadacId), eq(deviceMac)); } } ``` --- ### ❓
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值