使用 Spring 进行单元测试

本文内容纲要:使用 Spring 进行单元测试

一、使用spring中对Junit框架的整合功能

除了junit4和spring的jar包,还需要spring-test.jar。引入如下依赖:

<dependency>  

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>3.1.1.RELEASE</version>

</dependency>

package service;

import static org.Junit.Assert.assertEquals;

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 org.Springframework.transaction.annotation.Transactional;

import domain.Account;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("/config/Spring-db1.xml")

@Transactional

public class AccountServiceTest1 {

@Autowired

private AccountService service;

@Test

public void testGetAcccountById() {

Account acct = Account.getAccount(1, "user01", 18, "M");

service.insertIfNotExist(acct);

Account acct2 = service.getAccountById(1);

assertEquals(acct,acct2);

}

}

对这个类解释一下:

  • @RunWith 注释标签是 Junit 提供的,用来说明此测试类的运行者,这里用了 SpringJUnit4ClassRunner,这个类是一个针对 Junit 运行环境的自定义扩展,用来标准化在 Spring 环境中 Junit4.5 的测试用例,例如支持的注释标签的标准化
  • @ContextConfiguration 注释标签是 Spring test context 提供的,用来指定 Spring 配置信息的来源,支持指定 XML 文件位置或者 Spring 配置类名,这里我们指定 classpath 下的 /config/Spring-db1.xml 为配置文件的位置
  • @Transactional 注释标签是表明此测试类的事务启用,这样所有的测试方案都会自动的 rollback,即您不用自己清除自己所做的任何对数据库的变更了
  • @Autowired 体现了我们的测试类也是在 Spring 的容器中管理的,他可以获取容器的 bean 的注入,您不用自己手工获取要测试的 bean 实例了
  • testGetAccountById 是我们的测试用例:注意和上面的 AccountServiceOldTest 中相同的测试方法的对比,这里我们不用再 try-catch-finally 了,事务管理自动运行,当我们执行完成后,所有相关变更会被自动清除

参考:http://www.ibm.com/developerworks/cn/java/j-lo-springunitest/index.html

本文内容总结:使用 Spring 进行单元测试

原文链接:https://www.cnblogs.com/liaojie970/p/6222247.html

以上是 使用 Spring 进行单元测试 的全部内容, 来源链接: utcz.com/z/296332.html

回到顶部