spring整合junit单元测试

结合上一篇博客的例子讲解:

首先,导入jar包,如下:因为普通的单元测试,无法自动加载spring的IOC容器,因此需要加入由spring提供的spring-test jar包

        
        
            junit
            junit
            4.13
        

        
        
            org.springframework
            spring-test
            5.2.9.RELEASE
        

然后,需要在类名上使用@RunWith注解,该注解就是一个运行器,SpringJUnit4ClassRunner.class指定让junit单元测试运行于spring环境下。@ContextConfiguration 注解:告知spring运行器,spring的ioc容器是基于xml的还是基于注解的,并且指定其所在位置,如果是基于注解的,则使用classes属性,配置为:@ContextConfiguration(classes=SpringConfigruation.class),如果是基于xml文件的,则使用locations属性,配置为:@ContextConfiguration(locations="classpath:beans.xml"),配置完成,spring整合junit成功,并可自动加载ioc容器,使用自动注入获取service对象。

package cn.com.gjw.test;

import cn.com.gjw.pojo.Account;
import cn.com.gjw.service.AccountService;
import config.SpringConfigruation;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;
//spring整合junit后AccountService才可自动注入
/**
 * @ContextConfiguration 注解:告知spring运行器,spring的ioc容器是基于xml的还是基于注解的,并且指明所在位置。
 *      locations:指定xml文件的位置
 *      classes:指定注解类所在的位置
 */
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration(locations="classpath:beans.xml")
@ContextConfiguration(classes = SpringConfigruation.class)
public class TestConfiguration {

    @Autowired
    AccountService as;

/*    @Before
    public void before() {
        //加载spring的IOC容器
        //ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
        ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfigruation.class);
        as = ac.getBean("accountService", AccountService.class);
    }*/

    @Test
    public void testFindAll() {
        List list = as.findAll();
        for(Account account : list) {
            System.out.println(account);
        }
    }

    @Test
    public void testFindOne() {
        Account account = as.findOne(2);
        System.out.println(account);
    }

    @Test
    public void testSave() {
        Account account = new Account();
        account.setName("史珍香");
        account.setMoney(100000);
        Long count = as.saveAccount(account);
        System.out.println(count);
    }

    @Test
    public void testUpdate() {
        Account account = new Account();
        account.setMoney(19980);
        account.setId(4);
        int num = as.updateOne(account);
        System.out.println("修改了" + num);
    }

    @Test
    public void testDelete() {
        int num = as.deleteOne(4);
        System.out.println("删除了"+num);
    }
}

 

你可能感兴趣的:(spring,java,spring,junit,spring整合junit)