小编Pra*_*h P的帖子

java.lang.NoSuchMethodError: org.mockito.MockingDetails.getMockCreationSettings()Lorg/mockito/mock/MockCreationSettings

将应用程序迁移到 springboot 后,我​​在运行 jUnit 时遇到了这些问题。这是版本冲突的问题。这些是我正在使用的依赖项和版本:

  • 模拟核心 - 2.2.7
  • mockito-all - 2.0.2-beta
  • powermock-module-junit4 - 1.7.0RC2
  • powermock-api-mockito - 1.7.0RC2
  • powermock-classloading-objenesis - 1.7.0RC2

我可以看到mockito-core中的 MockingDetails 类有这个方法 getMockCreationSettings(),但mockito-all没有。测试以某种方式从错误的依赖项中选择该类。删除mockito-all会导致许多其他测试失败。有人可以帮我修复吗?

java.lang.NoSuchMethodError: org.mockito.MockingDetails.getMockCreationSettings()Lorg/mockito/mock/MockCreationSettings;
at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:107)
at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:81)
at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:69)
at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:56)
at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:291)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) …
Run Code Online (Sandbox Code Playgroud)

junit mockito powermock spring-boot spring-boot-test

7
推荐指数
1
解决办法
7862
查看次数

在这种情况下,为什么调用父类方法而不是子类方法?

我有一个父类 A 和它的子类 B。两者都有具有doSomething不同类型参数的方法。

A级

package Inheritance;

public class A {

    public void doSomething(Object str){
        System.out.println("Base impl:"+str);
    }
}
Run Code Online (Sandbox Code Playgroud)

B级

package Inheritance;

public class B extends A{

    public void doSomething(String str){
        System.out.println("Child impl:"+str);
    }

    public static void main(String[] args) {

        A a = new B();
        a.doSomething("override");

    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到“Base impl:override”作为输出!

a指向 的一个对象B,而他传递的参数是String,那么它不应该调用BdoSomething(String str)方法吗?

java inheritance

4
推荐指数
1
解决办法
3920
查看次数

Spring MVC基于url参数的请求映射

要求是编写一个控制器来处理来自以下网址的 POST 请求:

http://hostname:port/com/prod1?id=2&action=add
http://hostname:port/com/prod1?id=2&action=minus

http://hostname:port/com/prod2?id=2&action=add
http://hostname:port/com/prod2?id=2&action=minus
Run Code Online (Sandbox Code Playgroud)

我可以有两种方法,一种用于映射带有 action=add 的 url,另一种用于映射带有 action=minus 的 url?所有的请求都是POST。

java model-view-controller spring spring-mvc

2
推荐指数
1
解决办法
2135
查看次数

如何允许单个方法使用多个 @JmsListener 目的地

我目前正在致力于将 IBM Webshere 应用程序迁移到 Spring Boot。

作为其中的一部分,有一个 MDB 类需要转换为@JmsListener. 该 MDB 有一个监听多个队列的方法。我想对@JmsListener多个目的地进行同样的操作。我看到了这个线程,但这不起作用。

这是当前的 MDB 配置:

豆1

<bean id="myAppabcResponseMDB" class="company.myApp.service.mdb.MyAppMessageListenerMDB"/>
    <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
        <property name="destination" ref="myAppabcResponseDest"/>
        <property name="messageListener" ref="myAppabcResponseMDB"/>
        <property name="maxConcurrentConsumers" value="5"/>
        <property name="sessionTransacted" value="true"/>
        <property name="transactionManager" ref="transactionManager" />
        <property name="taskExecutor" ref="myTaskExecutor" />
      </bean>
      <bean id="myAppabcResponseDest" name="jms/myAppESBResponse" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="jms/myAppabcResponse"/>
        <property name="resourceRef" value="true"/>
      </bean>
Run Code Online (Sandbox Code Playgroud)
<bean id="myAppRequestMDB" class="company.myApp.service.mdb.MyAppMessageListenerMDB"/>
  <bean id="jmsContainer2" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="jmsConnectionFactory"/>
    <property name="destination" ref="myAppRequestDest"/>
    <property name="messageListener" ref="myAppRequestMDB"/>
    <property name="maxConcurrentConsumers" …
Run Code Online (Sandbox Code Playgroud)

java jms spring-jms spring-boot

1
推荐指数
1
解决办法
6205
查看次数