1.1 Spring整合junit的步骤
* Spring整合junit的配置
* 1.导入spring整合junit的jar(坐标)
* 2.使用Junit提供的一个注解把原有的main方法替换了,替换成spring提供的
* @RunWith
* 3.告知spring的运行器,spring和ioc创建是基于xml还是注解的,并且说明位置
* @ContextConfiguration
* Locations:指定xml文件的位置,加上classpath关键字,表示在lei路径下
* classes:指定注解类所在地位置
package com.jh.test; import com.jh.config.SpringConfiguration; import com.jh.entity.Account; import com.jh.service.AccountService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = SpringConfiguration.class) public class AccountTest { @Autowired private AccountService accountService = null; @Test public void TestFindAllAccount() { List<Account> list = accountService.findAllAccount(); for (Account a : list) { System.out.println(a); } } }
如果是xml配置:@ContextConfiguration(locations = "classpath:applicationContext.xml")
1.2 jar包冲突问题
我最后用的以下maven配置,我试过了,junit 4.13版本可以用,但是高于4.13就不能用了,spring-test 2.0版本以上的也不能用
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>spring05_eesy_anno_ioc</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.0.2.RELEASE</version>注意版本要与spring-test的版本一致 </dependency> <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.19</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version><!--此处需要注意的是,spring5 及以上版本要求 junit 的版本必须是 4.12 及以上,否则用不了--> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> </dependencies> </project>
解决方法:引入的test的依赖版本与项目中的Spring版本不一致,一种方法时去除版本指定,另外一种是将版本更改为与项目Spring一致