构建Spring 应用之后呢,编写单元测试就显得比较麻烦了,因为绝大部分的类都交给了spring托管了,需要人为的去加载spring的配置文件等等,或者需要编码去从spring 哪里得到某个类的实例等。
1.1 整合SpringTest之前的单元测试编码
public class TestDemo { private static DBDao dbDao; private Object[] testData; @BeforeClass public static void setUpBeforeClass() throws NamingException { // Initialize Spring Context ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); dbDao= context.getBean(DBDao .class); } @AfterClass public static void tearDownAfterClass() {} @Before public void setUp() { //prepare test data here testData = {.........}; } @After public void tearDown() { } @Test public void testSave() { dbDao.save(testData) } }
使用SpringTest 整合JUnit
使用SpringTest整个JUnit,也是把Junit的框架整合到Spring容器中,交给spring来托管了,是代码更简洁,同时 SpringTest 也提供了许多组件的支持 比如 JDBC的测试, JNDI的测试,以及很多的Mock方法,足以满足J2EE的单元测试的需要了。
准备Maven的依赖坐标
编写单元测试 需要 Junit 和SpringTest的jar包依赖,maven构建工具会自行解决依赖关系,所以 SpringTest 依赖的 SpringCore 会被自行导入。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${project.dependency.org.junit}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${project.dependency.spring.core}</version> <scope>test</scope> </dependency>
创建测试类
与常规的测试类的区别在于,使用了注解RunWith(SpringJUnit4ClassRuner.class)来声明使用Spring的 TestRunner类,同时呢使用ContextConfiguration注解 来声明 需要加载的 配置文件的路劲,这样一来就可以不用自行编码去加载配置文件啦。
同时我们还可以发现 测试依赖的类 也被打上注解@Autowired 实行自动装填。
整体的结构很简洁了。
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:spring-config-test.xml") public class TestDemo { @Autowired private DBDao dbDao; private Object[] testData; @BeforeClass public static void setUpBeforeClass() throws NamingException {} @AfterClass public static void tearDownAfterClass() {} @Before public void setUp() { //prepare test data here testData = {.........}; } @After public void tearDown() { } @Test public void testSave() { dbDao.save(testData) } }
时间: 2024-11-10 10:42:09