Jtest编写单元测试

(1)单元测试的主要目的是保存所测试方法的主干流程正确;

(2)写单元测试需要分层进行书写,每一部分的单元测试方案和策略有所不同;下面将针对dal层和biz进行说明

1)对于dal层次使用dbFit插件

首先,需要进行数据库基本配置,配置文件名为jtester.properties,放置在classspath根目录下,具体的一些配置项参见详细的实例文件;

database.only.testdb.allowing=false
database.type=mysql
database.url=jdbc:mysql://*****/dbname
database.userName=username
database.password=password
database.schemaNames=name
database.driverClassName=com.mysql.jdbc.Driver
spring.datasource.name=****
DatabaseModule.Transactional.value.default=rollback

第二步,需要进行数据文件的准备,这个过程中需要使用到@dbFit的WiKi语法,

例如,为user表准备一些数据,使用wiki语法的实现为

|connect|

|clean table|user|

 

|insert|user|

|id|username|password|role|

|1|xiayy|123|manage|

这样就就完成了数据库的一条数据准备;在具体的一个实例中按照下面的方法进行测试:

@Test
@DbFit(when = "prepare.newsChannelNav.record.when.wiki")
public void testQueryNavById(){

NewsNavDO newsNavDO = new NewsNavDO();
newsNavDO.setId(new Long(1));
newsNavDO.setName("hello");
newsNavDO.setStatus("disable");
newsNavDO result = newsNavDAO.queryNavById(new Long(3));
want.string(result.getName()).isEqualTo(newsNavDO.getName());
}

完成上述的步骤就完成了dal层一个方法的测试;

2)对于biz层的测试,需要按照下面的步骤进行测试:

@SpringBeanByName
private NewsChannelNavBO newsChannelNavBO;

@SpringBeanFor
@Mocked
private NewsChannelNavDAO newsChannelNavDAO;

@Test
public void getNewsChannelNavById() {

new NonStrictExpectations() {

{
//mock调用的中间结果数据
NewsChannelNavDO newsChannelNavDO = new NewsChannelNavDO();
newsChannelNavDO.setId(new Long(2));
newsChannelNavDO.setName("test");
newsChannelNavDO.setUrl("http://1688.com");
newsChannelNavDO.setOrdering(1);
newsChannelNavDO.setParentId(new Long(1));
newsChannelNavDAO.queryNewsChannelNavById(new Long(2));
result = newsChannelNavDO;

}

};

//进行测试数据的判定
NewsChannelNavDO newsNavDO = newsChannelNavBO.getNewsChannelNavById(new Long(2));
want.string(newsNavDO.getName()).isEqualTo("test");

}

业务逻辑层的接口测试,主要是将中间结果数据进行mock,仿照上面的过程即可,具体含义不再赘述。

 

 

posted @ 2012-11-25 15:50  xiayangy  阅读(1260)  评论(1编辑  收藏  举报