假设有一个名为“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/