测试驱动开发的理论已经提出好多年了,在这里关于他的原理和优势我就不多说了,我将大略的写一下我在实际中运用TDD的过程。
补一个jar: commons-pool-1.4.jar
过程
1、搭建测试用例运行环境
2、编写接口类
3、针对接口类编写测试用例
4、实现接口类,编写对应的功能代码
5、运行测试
6、如不通过,修改直至通过
7、循环完成其他功能
搭建测试用例运行环境
spring采用的依赖注射技术带来的一个主要好处就是你的代码对容器的依赖性比传统的J2EE开发小得多。配合spring提供的测试框架Spring TestContext Framework,搭建测试用例运行环境变得非常容易。Spring TestContext Framework的详细用法参考Spring2.5参考手册的8.3.7章。
BaseTest.java
package net.sw;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.ContextConfiguration;
@ContextConfiguration(locations = {"classpath:applicationContext.xml" })
public class BaseTest extends AbstractTransactionalJUnit4SpringContextTests {
public static final int ModoleSize = 100;
}
其他测试用例需要继承BaseTest
编写接口类
编写接口类同时也明确了需要完成的功能。
AlbumDao.java
package net.sw.album.dao;
import net.sw.album.domain.Album;
import net.sw.base.dao.GenericDao;
public interface AlbumDao extends GenericDao<Album, Long> {
}
AlbumManager.java
package net.sw.album.service;
import net.sw.album.domain.Album;
import net.sw.base.service.GenericManager;
public interface AlbumManager extends GenericManager<Album,Long> {
/**
* 设置相册访问权限
* @param id 相册ID
* @param authority 权限值
*/
public void setAuthority(Long id,int authority);
}
针对接口类编写测试用例
AlbumDaoTest.java
package net.sw.album.dao;
import net.sw.BaseTest;
import net.sw.album.domain.Album;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
public class AlbumDaoTest extends BaseTest{
private Album album;
@Autowired
private AlbumDao albumDao;
@Before
public void init() {
this.album = new Album();
}
@Test
public void testCRUD() {
this.album.setName("first photo box");
Album newAlbum = this.albumDao.save(this.album);
Assert.assertEquals(this.album.getName(), newAlbum.getName());
this.album.setName("first photo box2");
Album newAlbum2 = this.albumDao.save(this.album);
Assert.assertEquals(this.album.getName(), newAlbum2.getName());
Album newAlbum3 = this.albumDao.get(this.album.getId());
Assert.assertEquals(this.album.getName(), newAlbum3.getName());
this.albumDao.remove(this.album.getId());
Assert.assertEquals(false,this.albumDao.exists(this.album.getId()));
}
}
实现接口类,编写对应的功能代码
实现的过程及功能代码下几章再讲述。
- 大小: 14.2 KB
- 大小: 19.4 KB
- 大小: 21.6 KB
分享到:
评论