我们平时写test去测试Spring一起的程序时,一般都要加载context,然后再取bean之类。
写法如下:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {
@Autowired
MyService service;
...
}
现在的问题是,我要获取一个bean,但是上面这种通过annotation申明xml配置文件的方式,和我们原来的那种(如下),那光光写在annotation,那我怎么通过context的reference去获取bean呢?
解决办法
其实申明一个context的成员变量,autowired一下就ok了
@Autowired
ApplicationContext context;
package com.test;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
public class SpringMain {
/**
* @param args
*/
public static void main(String[] args) {
SpringBean bean = null;
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
bean = (SpringBean)factory.getBean("test1");
bean.sayHello();
ApplicationContext act = new ClassPathXmlApplicationContext("applicationContext.xml");
bean = (SpringBean)act.getBean("test1");
bean.sayHello();
factory = new XmlBeanFactory(new FileSystemResource("F:\\ccc\\workspace_zuhe\\Test\\src\\applicationContext.xml"));
bean = (SpringBean)factory.getBean("test1");
bean.sayHello();
}
}
--------------------------------------
如果有多个xml的配置文件:
@ContextConfiguration(locations = {"classpath:com/xxx/aaa/applicationContext.xml",
"classpath:com/xxx/aaa/common-config.xml",
"classpath:com/xxx/aaa/applicationContext-dao.xml",})
分享到:
相关推荐
在Web开发中,"webroot"(Web根目录)是一个重要的概念,它是Web服务器对外提供服务的根目录,存放着网站的静态资源、HTML、CSS、JavaScript文件以及配置文件等。其中,属性文件(通常为.properties格式)是Java开发...
在Spring3中,我们可以使用JUnit作为基础测试框架,配合Spring的`@ContextConfiguration`注解加载应用上下文,`@Autowired`注解注入依赖,以及`@Test`注解定义测试方法。例如,我们可以创建一个测试类,通过`@...
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class)//Spring的Junit测试,会在...
本文介绍了Spring单元测试的2种写法,第一种写法使用AbstractDependencyInjectionSpringContextTests抽象类,第二种写法使用@RunWith(SpringJUnit4ClassRunner.class)和@ContextConfiguration注解。两种写法都可以...
当我们在单元测试中使用@ContextConfiguration加载配置文件时,Spring Junit将只能找到src/test/resources目录下的配置文件,无法找到src/main/resources目录下的配置文件。这将导致单元测试时无法注入类,无法正常...
首先,Spring TestContext框架的核心是`@ContextConfiguration`注解,它用于指定测试类中应用上下文的配置。你可以通过此注解提供XML配置文件的位置,或者使用Java配置类。例如: ```java import org.spring...
Spring提供了一个名为`@ContextConfiguration`的注解,用于指示测试类加载的上下文配置。通过这个注解,我们可以指定Spring配置文件的位置,例如: ```java @RunWith(SpringRunner.class) @ContextConfiguration(...
它提供了与Spring容器集成的测试工具,如`@ContextConfiguration`用于加载配置,`@Autowired`自动注入依赖,以及`@MockBean`和`@SpyBean`来创建模拟对象。引入spring-test模块(通常为spring-test-4.x.x.jar或更高...
Spring提供了`@ContextConfiguration`和`@Autowired`等注解,用于加载和注入配置,以便在测试环境中创建和管理bean。`@ContextConfiguration`用来指定上下文配置文件的位置,`@Autowired`则自动将需要的bean注入到...
这里,`@RunWith(SpringJUnit4ClassRunner.class)`指定了测试运行器,`@ContextConfiguration(locations = {"classpath:applicationContext.xml"})`则指定了Spring配置文件的位置。`@Autowired`注解允许我们在测试类...
- **步骤**:通过 `@RunWith(SpringRunner.class)` 和 `@ContextConfiguration` 注解来启动 Spring 应用上下文。 **5.2 使用 @AutoBeanInject 让框架自动查找和注册需要的 bean** - **示例代码**: ```java ...
对于单元测试,Spring Test支持`@RunWith(SpringRunner.class)`,这个注解会将测试运行器设置为SpringJUnit4ClassRunner或SpringJUnit5ClassRunner(取决于JUnit版本),确保每个测试方法都能获得一个独立的Spring...
在测试方面,Spring提供了`@ContextConfiguration`和`@Autowired`等注解来协助进行单元测试和集成测试。例如: ```java @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:...
创建一个基于Spring的JUnit测试类,我们可以看到如何利用`@RunWith`和`@ContextConfiguration`注解来加载应用上下文,并通过`@Autowired`注解注入依赖: ```java import org.junit.Test; import org.spring...
在 SpringRunner 中,Spring 会通过 `@ContextConfiguration` 或 `@WebAppConfiguration` 等注解来加载测试所需的上下文配置,创建一个测试环境。这样,测试类中的bean可以通过@Autowired等注解获得,就像在实际应用...
Spring与TestNG的集成通常通过`@ContextConfiguration`注解来加载Spring上下文: ```java import org.springframework.test.context.ContextConfiguration; import org.testng.annotations.Test; @...
spring-test.jar 用在junit4以上 在类上写 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"WIN-INF/config/applicationContext.xml" })