Skip to content

七、集成Junit

一、步骤

  1. 导入spring集成Junit的坐标
  2. 使用@Runwith注解替换原来的运行期
  3. 使用@ContextConfiguration指定配置文件或配置类
  4. 使用@Autowired注入需要测试的对象
  5. 创建测试方法进行测试

二、代码实现

1、导入坐标

xml
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
	<version>6.1.6</version>
</dependency>
xml
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>
<dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>6.1.6</version>
</dependency>

提示

spring-testjunit要一起导入

2、配置类

java
@Configuration
@ComponentScan("com.hdq")
@Import({DataSourceConfiguration.class})
public class SpringConfiguration {
}
java
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {

    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean("dataSource")
    public DataSource getDateSource() throws PropertyVetoException {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

3、测试类

java
@RunWith(SpringJUnit4ClassRunner.class)  //告诉JUnit使用SpringJUnit4ClassRunner来运行测试
@ContextConfiguration(classes = {SpringConfiguration.class}) //Spring Test将加载SpringConfiguration类(以及它可能导入的任何其他配置类),并创建一个测试上下文,其中包含这些配置中定义的所有bean
//@ContextConfiguration("classpath:applicationContext.xml")
public class Demo {

    @Autowired
    private DataSource dataSource;

    @Test
    public void test() throws SQLException {
        System.out.println(dataSource.getConnection());
    }
}