基于 JUnit单元测试---Spring与Hibernate整合测试 

1.添加依赖

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

 

2.编写测试用例

package com.fxw.util;

import org.hibernate.internal.SessionFactoryImpl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class SpringIntegrationTest {

    @Autowired
    private ApplicationContext context;
    @Test
    public void test() {
        SessionFactoryImpl sessionFactory = (SessionFactoryImpl) context.getBean("sessionFactory");
        System.out.println(sessionFactory);
    }
}

 

注意:在使用 spring-test 的过程中,有两个 runner 可以选择,分别是 SpringRunner 和 SpringJUnit4ClassRunner。
如果是在 4.3 之前,只能选择 SpringJUnit4ClassRunner,如果是 4.3 之后,建议选择 SpringRunner。
SpringRunner 对 junit 的版本有要求,需要 4.12 及以上。

那么@RunWith(SpringRunner.class)与@RunWith(SpringJUnit4ClassRunner.class)有什么区别呢?

SpringRunner继承了SpringJUnit4ClassRunner,没有扩张任何功能,只是缩短了名字而已。

 

除此以外,我们还可以专门写一个Base类,用来加载spring环境,配置事务,接下来的测试类只要继承它就好了。

package com.fxw.util;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;


@RunWith(SpringRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
@Transactional(transactionManager = "transactionManager")
@Rollback(value = false)
public class BaseTest {
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("============单元测试start==========");
        System.out.println("============ 初始化数据 ==========");
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("============单元测试end==========");
        System.out.println("============ 清理数据 ==========");
    }
}

 

最后修改于 2020-10-20 19:58:06
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇