実践中の再構成17_表駆動法
コードと初期ユニットテストを参照してください。
http://zhang-xzhi-xjtu.iteye.com/blog/875986
テストの数が多いし、構造も似ているので、表駆動法を使うのもいい選択です。
http://zhang-xzhi-xjtu.iteye.com/blog/875986
テストの数が多いし、構造も似ているので、表駆動法を使うのもいい選択です。
/**
* 。
* */
public class TestUserQueryService2 {
/**
* 。
*
* <pre>
*
* , , , , ,
* , , , , ,
* ,
* </pre>
* */
private static List<String> testData;
/**
* 。
* */
static {
testData = new ArrayList<String>();
// ,
testData.add("19820110,40,20,19820101,19820107,10,1,10,10,1,0,0");
// ,
testData.add("19820110,43,20,19820101,19820107,10,5,3,3,41,0,0");
// ,
testData.add("19810804,40,20,19820101,19820107,10,2,10,0,0,10,11");
// ,
testData.add("19810801,43,23,19820101,19820107,10,3,3,0,0,3,21");
// ,
testData.add("19820103,43,20,19820101,19820107,10,5,10,3,41,7,1");
// ,
testData.add("19820103,43,4,19820101,19820107,10,5,7,3,41,4,1");
// ,
testData.add("19820103,40,60,19820101,19820107,10,6,10,0,0,10,11");
// ,
testData.add("19820103,40,17,19820101,19820107,10,6,7,0,0,7,11");
// ,
testData.add("19820103,43,40,19820101,19820107,10,6,10,0,0,10,8");
// ,
testData.add("19820103,43,20,19820101,19820107,10,7,3,0,0,3,18");
}
/**
* "yyyyMMdd" 。
* */
private static Date parseDate(String dateStr) {
Date date = null;
try {
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
date = dateFormat.parse(dateStr);
} catch (Exception e) {
throw new RuntimeException(e);
}
return date;
}
private UserQueryService queryService;
private MockUserQueryManager mockUserQueryManager;
/**
* 。
* */
private void setUpEnv(String hisDate, int hisSize, int prodSize) {
queryService = new UserQueryService();
mockUserQueryManager = new MockUserQueryManager(parseDate(hisDate),
hisSize, prodSize);
queryService.setManager(mockUserQueryManager);
}
/**
* 。
*
* @param userList
* 。
* @param size
* 。
* @param hisSize
* 。
* @param hisFrom
* index。
* @param prodSize
* 。
* @param prodFrom
* index。
*
* */
public void assertUserList(List<User> userList, int size, int hisSize,
int hisFrom, int prodSize, int prodFrom) {
Assert.assertNotNull(userList);
Assert.assertEquals(size, hisSize + prodSize);
Assert.assertEquals(size, userList.size());
for (int i = 0; i < hisSize; i++) {
User user = userList.get(i);
Assert.assertEquals("his_" + (hisFrom + i), user.getName());
}
for (int i = 0; i < prodSize; i++) {
User user = userList.get(hisSize + i);
Assert.assertEquals("prod_" + (prodFrom + i), user.getName());
}
}
@Test
public void testQuery() {
for (String data : testData) {
String[] parts = data.split(",");
String hisDate = parts[0];
int hisSize = Integer.valueOf(parts[1]);
int prodSize = Integer.valueOf(parts[2]);
setUpEnv(hisDate, hisSize, prodSize);
String start = parts[3];
String end = parts[4];
int pageSize = Integer.valueOf(parts[5]);
int pageNum = Integer.valueOf(parts[6]);
List<User> userList = queryService.findUsers(parseDate(start),
parseDate(end), pageSize, pageNum);
int resultSize = Integer.valueOf(parts[7]);
int resultHisSize = Integer.valueOf(parts[8]);
int resultHisFrom = Integer.valueOf(parts[9]);
int resultProdSize = Integer.valueOf(parts[10]);
int resultProdFrom = Integer.valueOf(parts[11]);
assertUserList(userList, resultSize, resultHisSize, resultHisFrom,
resultProdSize, resultProdFrom);
}
}
}