如果您觉得有用的话,记得给 博主点个赞,评论,收藏一键三连啊 ,写作不易啊^ _ ^。 而且听说 点赞的人每天的运气都不会太差 ,实在白嫖的话,那欢迎常来啊!!!
用来分析你的依赖 打开idea 选择 File -> Settings… ->Plugins 输入maven dependency helper 选择下面红框处的两个插件安装,用来分析
@InjectMocks TestController controller; @Mock private TestService service; @Before public void setUp() { //为UT提供框架使用的自动验证 MockitoAnnotations.initMocks(this); @Test public void test_Query_01() { String msg = "{\n" + " \"mainCode\":\"XXX\"\n" + "}"; AAA vo = JSON.parseObject(msg,new TypeReference<AAA>(){ }); PowerMockito.when(service.query(Mockito.any())).thenReturn(new HashMap<>()); controller.query(vo); Exception in thread "main" java.lang.NoSuchMethodError: org.mockito.Mockito.framework()Lorg/mockito/MockitoFramework; at org.powermock.api.mockito.mockmaker.MockMakerLoader.doLoad(MockMakerLoader.java:45) at org.powermock.api.mockito.mockmaker.MockMakerLoader.load(MockMakerLoader.java:36) at org.powermock.api.mockito.mockmaker.PowerMockMaker.<init>(PowerMockMaker.java:36) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) 03 分析依赖 1、打开pom文件 2、选择dependency analyzer,输入mock 同时我们了解到的是对于 PowerMock 2.x,您至少需要 Mockito 2.8.9+。 因此有兼容问题。 在给你们看一下正常的依赖关系是这样的: 因此我们就要手动修改一下它的pom了,如下: 1、右键点击exclude 2、添加兼容的mockito版本 最后的效果: <!-- PowerMock+Mockito+Junit4.4 -Above--> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-core</artifactId> <version>2.0.0-RC.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.9</version> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-inline</artifactId> <version>2.15.0</version> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.23.4</version> </dependency> 03 问题分析 一句话,我这个项目的springBoot版本比较低,连带着mockito的版本也较低,产生了兼容的问题。 先来看看下面这个示例:从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks从图中可以清晰的看出mock对象就是在调试期间用来作为真实对象的替代品。mock测试就是在测试过程中,对那些不容易构建的对象用一个虚拟对象来代替测试的方法就叫mock测试。知道什么是mock测试后,那么我们就来认识一下mock框架---Mockito除了有一个好记的名字外,Mockito尝试用不一样的方法做mocking测试,是简单轻量级能够替代EasyMock的框架。使用简单,测试代码可读性高,丰富的文档包含在javadoc中,直接在IDE中可查看 赠送jar包:mockito-core-3.8.0.jar; 赠送原API文档:mockito-core-3.8.0-javadoc.jar; 赠送源代码:mockito-core-3.8.0-sources.jar; 赠送Maven依赖信息文件:mockito-core-3.8.0.pom; 包含翻译后的API文档:mockito-core-3.8.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.mockito:mockito-core:3.8.0; 标签:mockito、core、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。 <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-testng</artifactId> <version>2.0.2</version> <scope NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。 既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。 那么为什么还会出现这个错误? 方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,就只能说明运行时引用的类里面没有这个方法。 这说起来有点拗口,简单的说,就是存在至少两... 异常情况: org.mocktio.internal.createion.instance.InstiatorProvider.getInstantiator(Long/mockito/mock/MockCreationSettings;)Lorg/mockito.internal/creation/instance/Instantiator 这种情况是mocktio jar 和... 在项目依赖比较复杂或者 Java 运行的环境有问题时,或者同一类型的 jar 包有不同版本存在,都可能触发该错误。本质上说是 JVM 找不到某个类的特定方法,也就是说 JVM 加载了错误版本的类。说白了,就是 JVM 找不到真正想要调用的方法啦!出现该错误的情形主要有以下两个种: 导入了不匹配的包版本;开发环境和运行环境不一致。 2 解决方法 查看“External Libraries”,看报错的方法到底存不存在,如果不存在,说明这个包一定有问题啦,更新包就可以啦;如果存在,说明包已... 在使用SpringBoot 2.2.1版本做项目时,使用单元测试的时候,环境中报的错误。 但是其中有一个关键的点,就是对于plugin: interface org.mockito.plugins.MockMaker这个,这个我并没有引入,为啥还报错呢?打开External Libraries库查看,发现有相关包org.mockito:mockito-core,看来应该是Spring Boot自动引入的mockito核心依赖项,如下 既然问题出在这里,我们取maven库中搜索mockito-core-3. org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Misplaced or misused argument matcher detected here: -> at xxxxxxxxxxxxxxxxxxxxxxxx You cannot use argument matchers outside of verification or stubbing. Examples of correct usage of arg. 当pom文件报missing某个包时,可以从本地的maven库中删除相关的jar包,然后右单击项目,Maven4MyEclipse->Update Project,在弹出的对话框中选择“Force Update Of Snapshots/Releases",就会可以重新下载解决! 转载于:https://www.cnblogs.com/tiramisuyj/p/9375077.html...
@InjectMocks TestController controller; @Mock private TestService service; @Before public void setUp() { //为UT提供框架使用的自动验证 MockitoAnnotations.initMocks(this); @Test public void test_Query_01() { String msg = "{\n" + " \"mainCode\":\"XXX\"\n" + "}"; AAA vo = JSON.parseObject(msg,new TypeReference<AAA>(){ }); PowerMockito.when(service.query(Mockito.any())).thenReturn(new HashMap<>()); controller.query(vo);
Exception in thread "main" java.lang.NoSuchMethodError: org.mockito.Mockito.framework()Lorg/mockito/MockitoFramework; at org.powermock.api.mockito.mockmaker.MockMakerLoader.doLoad(MockMakerLoader.java:45) at org.powermock.api.mockito.mockmaker.MockMakerLoader.load(MockMakerLoader.java:36) at org.powermock.api.mockito.mockmaker.PowerMockMaker.<init>(PowerMockMaker.java:36) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) 03 分析依赖 1、打开pom文件 2、选择dependency analyzer,输入mock 同时我们了解到的是对于 PowerMock 2.x,您至少需要 Mockito 2.8.9+。 因此有兼容问题。 在给你们看一下正常的依赖关系是这样的: 因此我们就要手动修改一下它的pom了,如下: 1、右键点击exclude 2、添加兼容的mockito版本 最后的效果: <!-- PowerMock+Mockito+Junit4.4 -Above--> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-core</artifactId> <version>2.0.0-RC.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.9</version> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-inline</artifactId> <version>2.15.0</version> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.23.4</version> </dependency> 03 问题分析 一句话,我这个项目的springBoot版本比较低,连带着mockito的版本也较低,产生了兼容的问题。 先来看看下面这个示例:从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks从图中可以清晰的看出mock对象就是在调试期间用来作为真实对象的替代品。mock测试就是在测试过程中,对那些不容易构建的对象用一个虚拟对象来代替测试的方法就叫mock测试。知道什么是mock测试后,那么我们就来认识一下mock框架---Mockito除了有一个好记的名字外,Mockito尝试用不一样的方法做mocking测试,是简单轻量级能够替代EasyMock的框架。使用简单,测试代码可读性高,丰富的文档包含在javadoc中,直接在IDE中可查看 赠送jar包:mockito-core-3.8.0.jar; 赠送原API文档:mockito-core-3.8.0-javadoc.jar; 赠送源代码:mockito-core-3.8.0-sources.jar; 赠送Maven依赖信息文件:mockito-core-3.8.0.pom; 包含翻译后的API文档:mockito-core-3.8.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.mockito:mockito-core:3.8.0; 标签:mockito、core、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。 <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-testng</artifactId> <version>2.0.2</version> <scope NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。 既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。 那么为什么还会出现这个错误? 方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,就只能说明运行时引用的类里面没有这个方法。 这说起来有点拗口,简单的说,就是存在至少两... 异常情况: org.mocktio.internal.createion.instance.InstiatorProvider.getInstantiator(Long/mockito/mock/MockCreationSettings;)Lorg/mockito.internal/creation/instance/Instantiator 这种情况是mocktio jar 和... 在项目依赖比较复杂或者 Java 运行的环境有问题时,或者同一类型的 jar 包有不同版本存在,都可能触发该错误。本质上说是 JVM 找不到某个类的特定方法,也就是说 JVM 加载了错误版本的类。说白了,就是 JVM 找不到真正想要调用的方法啦!出现该错误的情形主要有以下两个种: 导入了不匹配的包版本;开发环境和运行环境不一致。 2 解决方法 查看“External Libraries”,看报错的方法到底存不存在,如果不存在,说明这个包一定有问题啦,更新包就可以啦;如果存在,说明包已... 在使用SpringBoot 2.2.1版本做项目时,使用单元测试的时候,环境中报的错误。 但是其中有一个关键的点,就是对于plugin: interface org.mockito.plugins.MockMaker这个,这个我并没有引入,为啥还报错呢?打开External Libraries库查看,发现有相关包org.mockito:mockito-core,看来应该是Spring Boot自动引入的mockito核心依赖项,如下 既然问题出在这里,我们取maven库中搜索mockito-core-3. org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Misplaced or misused argument matcher detected here: -> at xxxxxxxxxxxxxxxxxxxxxxxx You cannot use argument matchers outside of verification or stubbing. Examples of correct usage of arg. 当pom文件报missing某个包时,可以从本地的maven库中删除相关的jar包,然后右单击项目,Maven4MyEclipse->Update Project,在弹出的对话框中选择“Force Update Of Snapshots/Releases",就会可以重新下载解决! 转载于:https://www.cnblogs.com/tiramisuyj/p/9375077.html...
Exception in thread "main" java.lang.NoSuchMethodError: org.mockito.Mockito.framework()Lorg/mockito/MockitoFramework; at org.powermock.api.mockito.mockmaker.MockMakerLoader.doLoad(MockMakerLoader.java:45) at org.powermock.api.mockito.mockmaker.MockMakerLoader.load(MockMakerLoader.java:36) at org.powermock.api.mockito.mockmaker.PowerMockMaker.<init>(PowerMockMaker.java:36) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442)
03 分析依赖 1、打开pom文件 2、选择dependency analyzer,输入mock 同时我们了解到的是对于 PowerMock 2.x,您至少需要 Mockito 2.8.9+。 因此有兼容问题。 在给你们看一下正常的依赖关系是这样的: 因此我们就要手动修改一下它的pom了,如下: 1、右键点击exclude 2、添加兼容的mockito版本 最后的效果: <!-- PowerMock+Mockito+Junit4.4 -Above--> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-core</artifactId> <version>2.0.0-RC.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.9</version> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-inline</artifactId> <version>2.15.0</version> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.23.4</version> </dependency> 03 问题分析 一句话,我这个项目的springBoot版本比较低,连带着mockito的版本也较低,产生了兼容的问题。 先来看看下面这个示例:从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks从图中可以清晰的看出mock对象就是在调试期间用来作为真实对象的替代品。mock测试就是在测试过程中,对那些不容易构建的对象用一个虚拟对象来代替测试的方法就叫mock测试。知道什么是mock测试后,那么我们就来认识一下mock框架---Mockito除了有一个好记的名字外,Mockito尝试用不一样的方法做mocking测试,是简单轻量级能够替代EasyMock的框架。使用简单,测试代码可读性高,丰富的文档包含在javadoc中,直接在IDE中可查看 赠送jar包:mockito-core-3.8.0.jar; 赠送原API文档:mockito-core-3.8.0-javadoc.jar; 赠送源代码:mockito-core-3.8.0-sources.jar; 赠送Maven依赖信息文件:mockito-core-3.8.0.pom; 包含翻译后的API文档:mockito-core-3.8.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.mockito:mockito-core:3.8.0; 标签:mockito、core、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。 <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-testng</artifactId> <version>2.0.2</version> <scope NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。 既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。 那么为什么还会出现这个错误? 方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,就只能说明运行时引用的类里面没有这个方法。 这说起来有点拗口,简单的说,就是存在至少两... 异常情况: org.mocktio.internal.createion.instance.InstiatorProvider.getInstantiator(Long/mockito/mock/MockCreationSettings;)Lorg/mockito.internal/creation/instance/Instantiator 这种情况是mocktio jar 和... 在项目依赖比较复杂或者 Java 运行的环境有问题时,或者同一类型的 jar 包有不同版本存在,都可能触发该错误。本质上说是 JVM 找不到某个类的特定方法,也就是说 JVM 加载了错误版本的类。说白了,就是 JVM 找不到真正想要调用的方法啦!出现该错误的情形主要有以下两个种: 导入了不匹配的包版本;开发环境和运行环境不一致。 2 解决方法 查看“External Libraries”,看报错的方法到底存不存在,如果不存在,说明这个包一定有问题啦,更新包就可以啦;如果存在,说明包已... 在使用SpringBoot 2.2.1版本做项目时,使用单元测试的时候,环境中报的错误。 但是其中有一个关键的点,就是对于plugin: interface org.mockito.plugins.MockMaker这个,这个我并没有引入,为啥还报错呢?打开External Libraries库查看,发现有相关包org.mockito:mockito-core,看来应该是Spring Boot自动引入的mockito核心依赖项,如下 既然问题出在这里,我们取maven库中搜索mockito-core-3. org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Misplaced or misused argument matcher detected here: -> at xxxxxxxxxxxxxxxxxxxxxxxx You cannot use argument matchers outside of verification or stubbing. Examples of correct usage of arg. 当pom文件报missing某个包时,可以从本地的maven库中删除相关的jar包,然后右单击项目,Maven4MyEclipse->Update Project,在弹出的对话框中选择“Force Update Of Snapshots/Releases",就会可以重新下载解决! 转载于:https://www.cnblogs.com/tiramisuyj/p/9375077.html...
1、打开pom文件 2、选择dependency analyzer,输入mock 同时我们了解到的是对于 PowerMock 2.x,您至少需要 Mockito 2.8.9+。 因此有兼容问题。 在给你们看一下正常的依赖关系是这样的: 因此我们就要手动修改一下它的pom了,如下: 1、右键点击exclude 2、添加兼容的mockito版本 最后的效果:
<!-- PowerMock+Mockito+Junit4.4 -Above--> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-core</artifactId> <version>2.0.0-RC.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.9</version> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-inline</artifactId> <version>2.15.0</version> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.23.4</version> </dependency> 03 问题分析 一句话,我这个项目的springBoot版本比较低,连带着mockito的版本也较低,产生了兼容的问题。 先来看看下面这个示例:从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks从图中可以清晰的看出mock对象就是在调试期间用来作为真实对象的替代品。mock测试就是在测试过程中,对那些不容易构建的对象用一个虚拟对象来代替测试的方法就叫mock测试。知道什么是mock测试后,那么我们就来认识一下mock框架---Mockito除了有一个好记的名字外,Mockito尝试用不一样的方法做mocking测试,是简单轻量级能够替代EasyMock的框架。使用简单,测试代码可读性高,丰富的文档包含在javadoc中,直接在IDE中可查看 赠送jar包:mockito-core-3.8.0.jar; 赠送原API文档:mockito-core-3.8.0-javadoc.jar; 赠送源代码:mockito-core-3.8.0-sources.jar; 赠送Maven依赖信息文件:mockito-core-3.8.0.pom; 包含翻译后的API文档:mockito-core-3.8.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.mockito:mockito-core:3.8.0; 标签:mockito、core、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。 <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-testng</artifactId> <version>2.0.2</version> <scope NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。 既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。 那么为什么还会出现这个错误? 方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,就只能说明运行时引用的类里面没有这个方法。 这说起来有点拗口,简单的说,就是存在至少两... 异常情况: org.mocktio.internal.createion.instance.InstiatorProvider.getInstantiator(Long/mockito/mock/MockCreationSettings;)Lorg/mockito.internal/creation/instance/Instantiator 这种情况是mocktio jar 和... 在项目依赖比较复杂或者 Java 运行的环境有问题时,或者同一类型的 jar 包有不同版本存在,都可能触发该错误。本质上说是 JVM 找不到某个类的特定方法,也就是说 JVM 加载了错误版本的类。说白了,就是 JVM 找不到真正想要调用的方法啦!出现该错误的情形主要有以下两个种: 导入了不匹配的包版本;开发环境和运行环境不一致。 2 解决方法 查看“External Libraries”,看报错的方法到底存不存在,如果不存在,说明这个包一定有问题啦,更新包就可以啦;如果存在,说明包已... 在使用SpringBoot 2.2.1版本做项目时,使用单元测试的时候,环境中报的错误。 但是其中有一个关键的点,就是对于plugin: interface org.mockito.plugins.MockMaker这个,这个我并没有引入,为啥还报错呢?打开External Libraries库查看,发现有相关包org.mockito:mockito-core,看来应该是Spring Boot自动引入的mockito核心依赖项,如下 既然问题出在这里,我们取maven库中搜索mockito-core-3. org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Misplaced or misused argument matcher detected here: -> at xxxxxxxxxxxxxxxxxxxxxxxx You cannot use argument matchers outside of verification or stubbing. Examples of correct usage of arg. 当pom文件报missing某个包时,可以从本地的maven库中删除相关的jar包,然后右单击项目,Maven4MyEclipse->Update Project,在弹出的对话框中选择“Force Update Of Snapshots/Releases",就会可以重新下载解决! 转载于:https://www.cnblogs.com/tiramisuyj/p/9375077.html...
<!-- PowerMock+Mockito+Junit4.4 -Above--> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-core</artifactId> <version>2.0.0-RC.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>2.0.0-beta.5</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.9</version> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-inline</artifactId> <version>2.15.0</version> <exclusions> <exclusion> <artifactId>mockito-core</artifactId> <groupId>org.mockito</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.23.4</version> </dependency>
03 问题分析 一句话,我这个项目的springBoot版本比较低,连带着mockito的版本也较低,产生了兼容的问题。 先来看看下面这个示例:从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks从图中可以清晰的看出mock对象就是在调试期间用来作为真实对象的替代品。mock测试就是在测试过程中,对那些不容易构建的对象用一个虚拟对象来代替测试的方法就叫mock测试。知道什么是mock测试后,那么我们就来认识一下mock框架---Mockito除了有一个好记的名字外,Mockito尝试用不一样的方法做mocking测试,是简单轻量级能够替代EasyMock的框架。使用简单,测试代码可读性高,丰富的文档包含在javadoc中,直接在IDE中可查看 赠送jar包:mockito-core-3.8.0.jar; 赠送原API文档:mockito-core-3.8.0-javadoc.jar; 赠送源代码:mockito-core-3.8.0-sources.jar; 赠送Maven依赖信息文件:mockito-core-3.8.0.pom; 包含翻译后的API文档:mockito-core-3.8.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.mockito:mockito-core:3.8.0; 标签:mockito、core、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。 <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-testng</artifactId> <version>2.0.2</version> <scope NoSuchMethodError是一个运行时错误,在编译时一般不会出现这个错误。 既然能成功编译,就说明方法本身是存在的,方法所在的类也是存在的,而且都可以正常的引用到。 那么为什么还会出现这个错误? 方法本身是存在的,方法所在类也是存在的,那么在运行时还会出现这个错误,就只能说明运行时引用的类里面没有这个方法。 这说起来有点拗口,简单的说,就是存在至少两... 异常情况: org.mocktio.internal.createion.instance.InstiatorProvider.getInstantiator(Long/mockito/mock/MockCreationSettings;)Lorg/mockito.internal/creation/instance/Instantiator 这种情况是mocktio jar 和... 在项目依赖比较复杂或者 Java 运行的环境有问题时,或者同一类型的 jar 包有不同版本存在,都可能触发该错误。本质上说是 JVM 找不到某个类的特定方法,也就是说 JVM 加载了错误版本的类。说白了,就是 JVM 找不到真正想要调用的方法啦!出现该错误的情形主要有以下两个种: 导入了不匹配的包版本;开发环境和运行环境不一致。 2 解决方法 查看“External Libraries”,看报错的方法到底存不存在,如果不存在,说明这个包一定有问题啦,更新包就可以啦;如果存在,说明包已... 在使用SpringBoot 2.2.1版本做项目时,使用单元测试的时候,环境中报的错误。 但是其中有一个关键的点,就是对于plugin: interface org.mockito.plugins.MockMaker这个,这个我并没有引入,为啥还报错呢?打开External Libraries库查看,发现有相关包org.mockito:mockito-core,看来应该是Spring Boot自动引入的mockito核心依赖项,如下 既然问题出在这里,我们取maven库中搜索mockito-core-3. org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Misplaced or misused argument matcher detected here: -> at xxxxxxxxxxxxxxxxxxxxxxxx You cannot use argument matchers outside of verification or stubbing. Examples of correct usage of arg. 当pom文件报missing某个包时,可以从本地的maven库中删除相关的jar包,然后右单击项目,Maven4MyEclipse->Update Project,在弹出的对话框中选择“Force Update Of Snapshots/Releases",就会可以重新下载解决! 转载于:https://www.cnblogs.com/tiramisuyj/p/9375077.html...
一句话,我这个项目的springBoot版本比较低,连带着mockito的版本也较低,产生了兼容的问题。