SpringFramework4系列之SpringTest:(一)Spring4整合Junit


构建Spring 应用以后呢,编写单元测试就显得比较麻烦了,由于绝大部分的类都交给了spring托管了,须要人为的去加载spring的配置文件等等,或者须要编码去从spring 哪里获得某个类的实例等。
java

1.1 整合SpringTest以前的单元测试编码spring

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 会被自行导入。maven

<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)
    }
}
相关文章
相关标签/搜索