Playframework 规格为2的Mockito中的NoSuchMethodError

Playframework 规格为2的Mockito中的NoSuchMethodError,playframework,mockito,specs2,Playframework,Mockito,Specs2,我将Play2.6项目升级为Play2.7。项目已编译,但我在测试中得到一个NoSuchMethodError: Exception in thread "specs2-8" java.lang.NoSuchMethodError: org.mockito.internal.progress.ThreadSafeMockingProgress.mockingProgress()Lorg/mockito/internal/progress/MockingProgress; at org.mocki

我将Play2.6项目升级为Play2.7。项目已编译,但我在测试中得到一个
NoSuchMethodError

Exception in thread "specs2-8" java.lang.NoSuchMethodError: org.mockito.internal.progress.ThreadSafeMockingProgress.mockingProgress()Lorg/mockito/internal/progress/MockingProgress;
at org.mockito.ArgumentMatchers.reportMatcher(ArgumentMatchers.java:1329)
at org.mockito.ArgumentMatchers.anyObject(ArgumentMatchers.java:165)
at org.mockito.ArgumentMatchers.any(ArgumentMatchers.java:145)
at org.specs2.mock.mockito.MockitoMatchers.anyObject(MockitoMatchers.scala:49)
at org.specs2.mock.mockito.MockitoMatchers.anyObject$(MockitoMatchers.scala:49)
at workflow.ProcessAG2WorkflowSpec.anyObject(ProcessAG2WorkflowSpec.scala:25)
at workflow.ProcessAG2WorkflowSpec$$anon$1.delayedEndpoint$workflow$ProcessAG2WorkflowSpec$$anon$1$1(ProcessAG2WorkflowSpec.scala:36)
at workflow.ProcessAG2WorkflowSpec$$anon$1$delayedInit$body.apply(ProcessAG2WorkflowSpec.scala:31)
at scala.Function0.apply$mcV$sp(Function0.scala:34)
at scala.Function0.apply$mcV$sp$(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at org.specs2.mutable.Around.$anonfun$delayedInit$2(Around.scala:16)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:22)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:21)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.execute.Result$$anon$11.asResult(Result.scala:246)
at org.specs2.execute.AsResult$.apply(AsResult.scala:32)
at org.specs2.execute.AsResult$.$anonfun$effectively$1(AsResult.scala:36)
at org.specs2.execute.ResultExecution.effectively(ResultExecution.scala:42)
at org.specs2.execute.ResultExecution.effectively$(ResultExecution.scala:40)
at org.specs2.execute.ResultExecution$.effectively(ResultExecution.scala:123)
at org.specs2.execute.AsResult$.effectively(AsResult.scala:36)
at play.api.test.WithApplicationLoader.$anonfun$around$1(Specs.scala:30)
at play.api.test.PlayRunners.$anonfun$running$2(Helpers.scala:75)
at play.api.test.PlayRunners.runSynchronized(Helpers.scala:52)
at play.api.test.PlayRunners.runSynchronized$(Helpers.scala:48)
at play.api.test.Helpers$.runSynchronized(Helpers.scala:617)
at play.api.test.PlayRunners.running(Helpers.scala:73)
at play.api.test.PlayRunners.running$(Helpers.scala:71)
at play.api.test.Helpers$.running(Helpers.scala:617)
at play.api.test.WithApplicationLoader.around(Specs.scala:30)
at de.mycompany.commons.play.specs2.BaseSpecs2$WithTestApplication.around(BaseSpecs2.scala:74)
at org.specs2.mutable.Around.$anonfun$delayedInit$1(Around.scala:16)
at org.specs2.execute.ResultExecution.effectively(ResultExecution.scala:42)
at org.specs2.execute.ResultExecution.effectively$(ResultExecution.scala:40)
at org.specs2.execute.ResultExecution$.effectively(ResultExecution.scala:123)
at org.specs2.mutable.Around.delayedInit(Around.scala:16)
at org.specs2.mutable.Around.delayedInit$(Around.scala:15)
at play.api.test.WithApplicationLoader.delayedInit(Specs.scala:27)
at workflow.ProcessAG2WorkflowSpec$$anon$1.<init>(ProcessAG2WorkflowSpec.scala:31)
at workflow.ProcessAG2WorkflowSpec.$anonfun$new$3(ProcessAG2WorkflowSpec.scala:31)
at org.specs2.matcher.Scope$$anon$3.$anonfun$asResult$1(ThrownExpectations.scala:152)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:22)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:21)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.execute.Result$$anon$11.asResult(Result.scala:246)
at org.specs2.execute.AsResult$.apply(AsResult.scala:32)
at org.specs2.execute.AsResult$.$anonfun$safely$1(AsResult.scala:40)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:22)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:21)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.execute.AsResult$.safely(AsResult.scala:40)
at org.specs2.matcher.Scope$$anon$3.asResult(ThrownExpectations.scala:152)
at org.specs2.execute.AsResult$.apply(AsResult.scala:32)
at org.specs2.specification.core.AsExecution$$anon$1.$anonfun$execute$1(AsExecution.scala:17)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:22)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:21)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.execute.Result$$anon$11.asResult(Result.scala:246)
at org.specs2.execute.AsResult$.apply(AsResult.scala:32)
at org.specs2.execute.AsResult$.$anonfun$safely$1(AsResult.scala:40)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:22)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:21)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.execute.AsResult$.safely(AsResult.scala:40)
at org.specs2.specification.core.Execution$.$anonfun$result$1(Execution.scala:310)
at org.specs2.specification.core.Execution$.$anonfun$withEnvSync$3(Execution.scala:328)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:22)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:21)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.execute.Result$$anon$11.asResult(Result.scala:246)
at org.specs2.execute.AsResult$.apply(AsResult.scala:32)
at org.specs2.execute.AsResult$.$anonfun$safely$1(AsResult.scala:40)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:22)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:21)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.execute.AsResult$.safely(AsResult.scala:40)
at org.specs2.specification.core.Execution$.$anonfun$withEnvSync$2(Execution.scala:328)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:22)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:21)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.execute.Result$$anon$11.asResult(Result.scala:246)
at org.specs2.execute.AsResult$.apply(AsResult.scala:32)
at org.specs2.specification.Before.$anonfun$apply$3(Context.scala:43)
at org.specs2.execute.ResultExecution.executeEither(ResultExecution.scala:92)
at org.specs2.execute.ResultExecution.executeEither$(ResultExecution.scala:81)
at org.specs2.execute.ResultExecution$.executeEither(ResultExecution.scala:123)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:73)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:73)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.specification.Before.apply(Context.scala:43)
at org.specs2.specification.Before.apply$(Context.scala:42)
at org.specs2.specification.BeforeAfter.result$lzycompute$1(Context.scala:102)
at org.specs2.specification.BeforeAfter.result$1(Context.scala:102)
at org.specs2.specification.BeforeAfter.$anonfun$apply$4(Context.scala:103)
at org.specs2.execute.ResultExecution.execute(ResultExecution.scala:22)
at org.specs2.execute.ResultExecution.execute$(ResultExecution.scala:21)
at org.specs2.execute.ResultExecution$.execute(ResultExecution.scala:123)
at org.specs2.execute.Result$$anon$11.asResult(Result.scala:246)
at org.specs2.execute.AsResult$.apply(AsResult.scala:32)
at org.specs2.specification.After.apply(Context.scala:78)
at org.specs2.specification.After.apply$(Context.scala:77)
at org.specs2.specification.BeforeAfter.apply(Context.scala:103)
at org.specs2.specification.BeforeAfter.apply$(Context.scala:101)
at org.specs2.specification.BeforeAfterEach$$anon$1.apply(EachContext.scala:52)
at org.specs2.specification.create.ContextualFragmentFactory.$anonfun$example$6(FragmentFactory.scala:106)
at org.specs2.specification.core.Execution.$anonfun$startExecution$3(Execution.scala:136)
at scala.util.Success.$anonfun$map$1(Try.scala:251)
at scala.util.Success.map(Try.scala:209)
at scala.concurrent.Future.$anonfun$map$1(Future.scala:288)
at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

specs2
唯一需要的mockito依赖项是
mockitocore
。您应该删除
mockitoall
,它必须通过另一个依赖项引入到您的项目中。您可以使用插件来调查这一点。

我出现此错误是因为我的项目的pom.xml文件引用的是Mockito v1而不是Mockito v2。

这可能是版本之间的不兼容。你的类路径上有哪个版本的specs2和mockito?@Eric将它们添加到问题编辑:忘记添加测试范围。(奇怪的是,依赖关系图中没有mockito。whatDependsOn org.mockito也不会产生任何结果。但是excludeDependencies+=“org.mockito”%“mockito all”会起作用,谢谢你的提示!)
sbt: org.mockito:mockito-all:1.10.8:jar
sbt: org.mockito:mockito-core:2.23.4:jar
sbt: org.specs2:specs2-common_2.12:4.3.6:jar
sbt: org.specs2:specs2-core_2.12:4.3.6:jar
sbt: org.specs2:specs2-fp_2.12:4.3.6:jar
sbt: org.specs2:specs2-junit_2.12:4.3.6:jar
sbt: org.specs2:specs2-matcher_2.12:4.3.6:jar
sbt: org.specs2:specs2-mock_2.12:4.3.6:jar
sbt: com.typesafe.play:play-specs2_2.12:2.7.0