java - 测试从数据库查询结果集中返回唯一值的方法

标签 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() 的方法,用 rs 填充 HashSet setOfNames

执行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);
}

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

我知道我应该编写一个空的、空的和负的测试。有哪些极端情况?

最佳答案

潜在的极端情况:

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

关于java - 测试从数据库查询结果集中返回唯一值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19172900/

相关文章:

java - 使用 Runtime.exec 将 CC 添加到 mailx 命令

java - hibernate 异常

java - 使用 Java 进行 JDBC 连接填充 DB2 参数

python - 如何使用 Travis-CI 运行 Tox

java - 如何在此 Java 代码之上添加心跳消息(用于 KnockKnockClient/Server)?

java - 对形状进行分组,以便我可以通过单击鼠标循环浏览它们 - 处理和 java

sql-server - 为什么我的日志文件需要 sql server 中物理表大小的 3 倍

mysql - 具有只读访问权限的 MySQL 的 ODBC 5.1 连接字符串

Powershell Core + Pester - 将测试与 src 分开

unit-testing - 试驾南希模块