测试方法以从db查询的结果集中返回唯一值

时间:2013-10-04 03:51:30

标签: java database unit-testing junit

假设有一个名为“Students”的数据库表。

         Students Table
|---------------|---------------|
|     Name      |      Age      |
|---------------|---------------|
|     John      |       9       |
|---------------|---------------|
|     Jane      |       7       |
|---------------|---------------|
|     Dana      |       8       |
|---------------|---------------|
|     John      |       6       |
|---------------|---------------|

我向数据库发出请求,使用以下命令返回所有名称:

SELECT Name FROM Students

所以结果集将是:

ResultSet rs = {"John" "Jane" "Dana" "John"}

然后我想返回所有唯一值,因此我编写了一个名为populateSet()的方法,用HashSet setOfNames填充rs

执行populateSet(ResultSet rs)后,只显示唯一的名称:

"John" "Jane" "Dana"

以下是验证测试:

public void testValidation() {
    // Skipping the test data / db connection / query part
    ResultSet rs = ResultSet received back from DB
    Set<String> expected = {"John", "Jane", "Dana"};
    Set<String> actual = WhateverClass.populateSet(rs);
    assertEquals(expected, actual);
}

我可以编写哪些可能的单元测试?

我知道我应该写一个空的,空的和负面的测试。什么是角落案件?

1 个答案:

答案 0 :(得分:2)

潜在的角落案例:

  • 非常大的桌子(数百万行)
  • 交易性 - 例如,如果在开始表扫描后插入/删除/更新名称会发生​​什么?
  • 数据排序
  • 区分大小写/名称不敏感
  • 名称中的非ASCII字符