Java-在方法内创建一个返回存根接口
我有这个接口Java-在方法内创建一个返回存根接口,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有这个接口 public interface MQTTClient { public void prepareAndSend(String recipient, String message); } 出于测试目的,我想创建一个这样的配置类 @Configuration public class TestServiceConfig { @Bean public MQTTClient mqttClient() { return new {
public interface MQTTClient {
public void prepareAndSend(String recipient, String message);
}
出于测试目的,我想创建一个这样的配置类
@Configuration
public class TestServiceConfig {
@Bean
public MQTTClient mqttClient() {
return new {
public class MQTTClientImpl implements MQTTClient {
@Override
public void prepareAndSend(String recipient, String message) {
// TODO Auto-generated method stub
}
}
}
}
}
但我不知道这是否可行当然有可能,通常有三种方法:
@Primary
来确保spring加载这一个@Primary
@Bean
public MQTTClient mqttClient() {
return Mockito.mock(MQTTClient.class);
}
springboot
,则可以使用注释@MockBean
,因为版本1.4.x
当然这是可能的,通常有三种方法:
@Primary
来确保spring加载这一个@Primary
@Bean
public MQTTClient mqttClient() {
return Mockito.mock(MQTTClient.class);
}
springboot
,则可以使用注释@MockBean
,因为版本1.4.x
您必须使用单元测试进行测试,而不是在配置文件中。 您必须声明内部类或创建匿名类。在本例中,您试图在同一块中创建对象和类声明。因此java无法创建未声明类的对象。首先声明类,然后创建此类的对象 匿名:
return new MQTTClient {
@Override
public void prepareAndSend(String recipient, String message) {
// TODO Auto-generated method stub
}
}
内部类:
class MQTTClientImpl implements MQTTClient {
@Override
public void prepareAndSend(String recipient, String message) {
// TODO Auto-generated method stub
}
}
public MQTTClient mqttClient() {
return new MQTTClientImpl();
}
注:
实际上,若您正在测试接口,那个就意味着您正在等待
这个接口的实现。所以内部类或匿名类是
不适用于此目的。因为测试级别必须与
业务级别。否则以后您将在代码中感到困惑。如果
您只需假设实现已通过,然后继续本部分的其余部分
然后应用程序使用模拟。当真正实现时,使用
要测试的实际实现类
您必须使用单元测试进行测试,而不是在配置文件中。 您必须声明内部类或创建匿名类。在本例中,您试图在同一块中创建对象和类声明。因此java无法创建未声明类的对象。首先声明类,然后创建此类的对象 匿名:
return new MQTTClient {
@Override
public void prepareAndSend(String recipient, String message) {
// TODO Auto-generated method stub
}
}
内部类:
class MQTTClientImpl implements MQTTClient {
@Override
public void prepareAndSend(String recipient, String message) {
// TODO Auto-generated method stub
}
}
public MQTTClient mqttClient() {
return new MQTTClientImpl();
}
注:
实际上,若您正在测试接口,那个就意味着您正在等待
这个接口的实现。所以内部类或匿名类是
不适用于此目的。因为测试级别必须与
业务级别。否则以后您将在代码中感到困惑。如果
您只需假设实现已通过,然后继续本部分的其余部分
然后应用程序使用模拟。当真正实现时,使用
要测试的实际实现类