用Spring2.5进行单元测试

来源:互联网 发布:数据库mdf文件怎么用 编辑:程序博客网 时间:2024/05/12 06:12

 Spring2.5为测试提供了全新的TestContext Framework,在Spring2.5中可以利用注解编写测试用例,本文不会讨论TestContext Framework的信息,仅以一个实际例子来说明如何编写测试用例。

关键字:Spring2.5,Unit Test,JUnit4.4;


内容:
要创建一个基于Spring2.5的JUnit4.4测试用例其实相当简单,主要进行以下几步的工作:
(1)创建一个扩展自AbstractTransactionalJUnit4SpringContextTests的类,该基类是Spring2.5为方便在JUnit4环境进行事务测试的类,它还提供了一个simpleJdbcTemplate属性让你可以方便地操控数据库表,便于对测试数据进行有效的操作;
(2)用@ContextLocation注解指定你要加载的Spring配置信息所在的位置;(默认的加载文件信息请参阅Spring Documentation);
(3)用@Autowired或@Resource注解注入你的Service接口,@Autowrired是指按类型将Spring Bean注入;而@Resource则按名称将Spring Bean注入。
(4)用@Before准备待测试的数据,如果我们的数据库表结构没有任何数据,则可以在这里预先插入记录,以便进行单元测试,当整个测试完成后,这些数据都不会被保留在数据库中。
(5)在需要进行测试的方法上使用JUnit4.4提供的@Test注解进行标示;

下面我们以一个例子来说明如何编写一个测试用例:
<1>示例信息
假设我们有一个名为TrainProjectService的服务类需要进行单元测试,该Service接口的方法如清单1-1所示:
清单1-1
public interface TrainProjectService {

     //根据ID获取培训项目信息
     public TrainProject getTrainProjectById(Integer trainProjectId);
     …
}

Spring配置信息如清单1-2所示:
清单1-2
/cn/com/suhao/test/train/conf/applicationContext-train-service.xml

<bean   id="trainProjectService"
class="cn.com.suhao.test.train.service.impl.TrainProjectServiceImp">
        <property name="trainProjectDao" ref="trainProjectDao" />
</bean>


/cn/com/suhao/test/train/conf/applicationContext-train-dao.xml

<bean   id="trainProjectDao"
class="cn.com.suhao.test.train.dao.impl.TrainProjectDAOImp" parent="parentDao" />


<2>测试用例
@ContextConfiguration(locations={"/cn/com/suhao/test/appconf/applicationContext.xml",
          "/cn/com/suhao/test/train/conf/applicationContext-*.xml"
         }
)
public class TestTrainProjectService extends AbstractTransactionalJUnit4SpringContextTests {

     @Autowired
     private TrainProjectService trainProjectService;
     private Integer projectId;
    
     @Before
     public void prepareTestData() {
         final String   sql = "insert into train_project(project_name, project_attendee) values('English Test', 'Mike')";
         KeyHolder keyHolder = new GeneratedKeyHolder();
         simpleJdbcTemplate.getJdbcOperations().update(
             new PreparedStatementCreator() {
                 public PreparedStatement createPreparedStatement(Connection conn)
                     throws SQLException {
                     PreparedStatement ps = conn.prepareStatement(sql);
                     return ps;
                 }
             }, keyHolder);
         projectId = keyHolder.getKey().intValue();
     }
    
     @Test
     public void testGetTrainProject() {
         TrainProject trainProject = trainProjectService.getTrainProjectById(projectId);
         Assert.notNull(trainProject);
     }
    
     }

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩吃饭少消瘦怎么办 小孩吃饭少挑食怎么办 小孩吃饭太少怎么办 孩子不正经吃饭怎么办 月经少卵巢早衰怎么办 四个月婴儿厌食怎么办 孩子读书成绩差怎么办 小孩学习记不住怎么办 儿童不爱吃菜怎么办 10儿童不爱吃饭怎么办 儿童不爱吃蔬菜怎么办 婴儿不爱吃饭怎么办啊 初中不爱写作业怎么办 老是不想写作业怎么办 一年级孩子不爱学怎么办 一年级孩子不爱学习怎么办 我不想读书了怎么办 孩子读书读不懂怎么办 一岁多宝宝不吃奶粉怎么办 小孩不讲话怎么办 舌头 看书记不住内容怎么办 看不下去书怎么办 职高读不下去怎么办 小孩不主动说话怎么办 不喜欢自己的儿子怎么办 生了儿子不喜欢怎么办 孩子不愿意去幼儿园怎么办 内向妈妈带孩子怎么办 从小就不爱学习怎么办 孩子老爱玩不爱学习怎么办? 孩子不爱做题怎么办 看书静不下心怎么办 孩子不自觉学习怎么办 不自觉的孩子怎么办 不学习的孩子怎么办 电脑不受老师控制怎么办 儿子不尊重老师怎么办 小孩不喜欢吃蔬菜怎么办 小孩不愿练钢琴怎么办 孩子不喜欢幼儿园老师怎么办 孩子不主动思考怎么办