英文:
How to mock task:executor in Spring
问题
@Component
public class SampleApplication {
private static final Logger LOGGER = Logger.Factory.getLogger();
private KafkaProducer<String, String> producer = null;
public SampleApplication() {}
@Async(value = "audit-task-executor")
public void sendMessageToExternalKafka(String casterMessage) throws IOException {}
}
在 spring bean.xml 中:
<task:executor id="audit-task-executor"
pool-size="1"
queue-capacity="1"
rejection-policy="DISCARD_OLDEST"/>
我想编写一个测试来模拟它,但是无法做到。抛出以下异常。
初始化bean失败;嵌套异常是 java.lang.NoClassDefFoundError: org/springframework/objenesis/SpringObjenesis
我的测试配置:
@Bean(name = "producerExt")
FactoryBean sampleApplication() {
return new AbstractFactoryBean() {
@Override
public Class getObjectType() {
return SampleApplication.class;
}
@Override
protected SampleApplication createInstance() {
return mock(SampleApplication.class);
}
};
}
@Bean(name = "audit-task-executor")
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
return mock(ThreadPoolTaskExecutor.class);
}
实现 FactoryBean 以避免调用 @PostConstruct。
<details>
<summary>英文:</summary>
@Component
public class SampleApplication {
private static final Logger LOGGER = Logger.Factory.getLogger();
private KafkaProducer<String, String> producer = null;
public SampleApplication() {}
@Async(value = "audit-task-executor")
public void sendMessageToExternalKafka(String casterMessage) throws IOException {}
}
In spring bean.xml
<task:executor id="audit-task-executor"
pool-size="1"
queue-capacity="1"
rejection-policy="DISCARD_OLDEST"/>
I want to write a test to mock it, but not able to do it. Its throwing following exception.
Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/objenesis/SpringObjenesis
My test configuration:
@Bean(name = "producerExt")
FactoryBean sampleApplication() {
return new AbstractFactoryBean() {
@Override
public Class getObjectType() {
return SampleApplication.class;
}
@Override
protected SampleApplication createInstance() {
return mock(SampleApplication.class);
}
};
}
@Bean(name = "audit-task-executor")
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
return mock(ThreadPoolTaskExecutor.class);
}
Implemented FactoryBean to avoid invocation of @PostConstruct
</details>
专注分享java语言的经验与见解,让所有开发者获益!
评论