`
vyyv
  • 浏览: 17122 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

网络相册开发(3)——测试驱动开发(TDD)

    博客分类:
  • Flex
阅读更多

测试驱动开发的理论已经提出好多年了,在这里关于他的原理和优势我就不多说了,我将大略的写一下我在实际中运用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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics