spring日志中的info消息显示:跳过[BeanMethod:name=bar,declaringclass=test.package.mockitoTestConfiguration]的bean定义:bean“bar”的定义已经存在。这个顶级bean定义被认为是重写。
示例:
下面有一个简单的示例,可以使用。这里,Bar是嵌套在Foo内部的,我需要模拟Bar进行测试:
@Component
public class Foo
{
@Autowired
private Bar bar;
public String getResponseFromBar(String request)
{
String response = bar.someMethod(String request);
//do something else with this reponse
return response;
}
}
@Component
public class Bar {
public String someMethod(String request) {
String response = null;
//do something
return response;
}
}
现在对于测试来说,假设我想注入一个mockbar而不是真正的bar。我如何在下面的测试类中实现这一点?
@Profile("test")
@Configuration
public class MockitoTestConfiguration {
//adding the name attribute is important.
@Bean(name="mockBar")
@Primary
public Bar bar() {
logger.debug("injecting mock bar");
return Mockito.mock(Bar.class);
}
}
实际测试用例:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath*:test-context.xml")
public class FooTest {
@Autowired
Foo foo;
@Autowired
Bar mockBar; //need this to set up the mock response in the test case.
@Test
public void testAMethodInFoo_WithBarInjectedByMockito() {
//set up the mockBar response
Mockito.when(mockBar.someMethod("1")).thenReturn("1-response");
String response = foo.getResponseFromBar();
assertEquals("1-response", response);
}
}
根据ConfigurationClassBeanDefinitionReader
代码,我想您正在使用xml配置来定义主bean。如果是这样,只需在创建mockito bean时添加一个名称。
@Bean(name="mockbar")
@Primary
public Bar bar() {
logger.debug("injecting mock bar");
return Mockito.mock(Bar.class);
}
这样,Spring将允许您同时拥有这两个bean,并且当您使用@primary
时,它将是您的测试所使用的bean。
使用非主bean重写主bean的Spring
问题内容: 我想将Mockito模拟对象注入到Spring(3+)bean中,以进行JUnit的单元测试。我的bean依赖项当前是通过在私有成员字段上使用注释来注入的。 我考虑过使用,但是我希望注入的bean实例实际上是一个代理,因此没有声明目标类的私有成员字段。我不希望为依赖项创建一个公共的setter,因为我将纯粹出于测试目的而修改接口。 我遵循了Spring社区提供的一些建议,但是未创建该模
我正在使用Spring boot测试(通过JUnit4和Spring MockMvc)REST服务适配器。适配器只需将向其发出的请求传递给另一个REST服务(使用自定义的RestTemplate),并将附加数据附加到响应中。 我想运行测试来执行控制器集成测试,但想用模拟覆盖控制器中的,以允许我预定义第三方REST响应并防止它在每次测试中被击中。我已经能够通过实例化一个并将其传递给要测试的控制器,该
我正在将旧的xml/java配置转换为纯java配置。在xml中,我将参数注入配置文件,如下所示: 是否可以在爪哇配置中注入参数?(无需使用自动布线! 编辑:使用@Import,我看不到任何将参数注入SpringRestConfiguration的机会
1. 前言 上一节,我们通过 xml 文件的配置方式,实现了对多种依赖类型的注入,当然体会到了 xml 文件配置方式的弊端:有一点麻烦。 依赖注入是有两种方式,一种是 xml ,另外一种就是注解的配置方式。 本节,我们演示下通过注解配置这种方式来实现注入依赖。 来吧 ,直入主题,莫浪费大好光阴… 2. 工程实例 2.1 注解的介绍 在正式使用注解之前,我们首先介绍下注解语法以及它的作用。 @Aut
问题内容: 我有以下代码: 我想使用Mockito创建一个测试。我编写了如下测试: 我在网上收到NullPointerException: ,它表示“策略”列表已初始化,但为空。Mohito有什么办法可以像Spring一样浪费时间?是否将所有实现接口“策略”的实例自动添加到列表中? 顺便说一句,我在Wrapper类中没有任何二传手,如果可能的话,我想以这种方式离开。 问题答案: Mockito不知
我正在为一个引用硬编码文件名“classpath:config.properties”的应用程序编写测试。无法更改此名称。有没有办法用不同的配置测试这个应用程序?i、 e.不同的测试在运行时提供不同的配置? 这是一个奇怪的要求,但我非常感谢任何意见