我在试图编写单元测试的Spring Boot应用程序中有一个Camel处理器。处理器类如下所示:
@Named
public class MyProcessor implements Processor {
@Inject
private MyService myService;
@Override
public void process(Exchange exchange) {
...
}
}
我正在尝试将模拟MyService对象注入单元测试。
我试过这个:
@RunWith(CamelSpringRunner.class)
@SpringBootTest
public class MyProcessorTest {
@TestConfiguration
static class Config {
@Autowired
private MyProcessor myProcessor;
@Bean
CamelContextConfiguration myProcessorTestContextConfiguration() {
return new CamelContextConfiguration() {
@Override
public void beforeApplicationStart(CamelContext camelContext) {
MyService myService = Mockito.mock(MyService.class);
camelContext.addService(myService);
...
…但这似乎不起作用-MyService的非模拟实例被注入处理器。我认为问题是因为我的模拟服务对象是在Camel上下文中创建的,而不是通过Spring创建的。
任何人都可以就正确的方法提出建议吗?
提前感谢您的任何帮助。
您可以使用< code>@MockBean用模拟替换SpringBootTest中的Bean
@SpringBootTest
...
@MockBean
private MyService myService;
这将在Spring测试上下文中创建一个类型为< code>MyService的Mockito Mock,并(因此)将其注入到正常情况下会注入真实Bean的位置。
我有以下用例: 问题2:为什么如果我只使用构造函数而不使用@Autowired或者反之亦然,那么一切都能正常工作,因为我没有加载Spring上下文...我有单元测试...
问题内容: 我想将Mockito模拟对象注入到Spring(3+)bean中,以进行JUnit的单元测试。我的bean依赖项当前是通过在私有成员字段上使用注释来注入的。 我考虑过使用,但是我希望注入的bean实例实际上是一个代理,因此没有声明目标类的私有成员字段。我不希望为依赖项创建一个公共的setter,因为我将纯粹出于测试目的而修改接口。 我遵循了Spring社区提供的一些建议,但是未创建该模
spring bean xml 有几个使用真实对象预先编写的测试用例。有没有办法我可以模拟这个类B,得到注入类A和模拟几个方法?我只想在我的测试用例中这样做,以便预先编写的测试用例不受影响?
我的实现出了什么问题?谢谢
我在尝试包装我的代码以用于单元测试时遇到了一些问题。问题是。我有接口IHttpHandler: 现在很明显,我将在Connection类中有一些方法,这些方法将从my后端检索数据(JSON)。但是,我想为这个类编写单元测试,显然我不想编写针对真实后端的测试,而是一个被嘲弄的测试。我曾尝试谷歌一个很好的答案,但没有很大的成功。我以前可以并且曾经使用过Moq来模拟,但是从来没有在像HttpClient
遇到了另一个常见的问题,同时为Spring Batch编写单元测试和集成测试组件是如何模拟域对象。一个很好的例子是StepExecutionListener,如下所示: public class NoWorkFoundStepExecutionListener extends StepExecutionListenerSupport { public ExitStatus afterSte