Java 测试从db查询的结果集中返回唯一值的方法
假设有一个名为“Students”的数据库表 我请求数据库使用以下命令返回所有名称:Java 测试从db查询的结果集中返回唯一值的方法,java,database,unit-testing,junit,Java,Database,Unit Testing,Junit,假设有一个名为“Students”的数据库表 我请求数据库使用以下命令返回所有名称: SELECT Name FROM Students 因此,结果集将是: ResultSet rs = {"John" "Jane" "Dana" "John"} 然后我想返回所有唯一的值,因此我编写了一个名为populateSet()的方法,用rs填充HashSet-setOfNames 执行populateSet(ResultSet rs)后,仅显示唯一的名称: "John" "Jane" "Dana"
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);
}
public void testValidation(){
//跳过测试数据/db连接/查询部分
ResultSet rs=从数据库返回的结果集
Set expected={“John”、“Jane”、“Dana”};
设置实际值=WhateverClass.populateSet(rs);
资产质量(预期、实际);
}
我可以编写哪些可能的单元测试
我知道我应该写一个空的,空的,负的测试。哪些是角落案例?潜在的角落案例:
- 非常大的表(数百万行)
- 事务性-例如,如果在开始表扫描后插入/删除/更新名称,会发生什么情况
- 数据排序
- 名称区分大小写/不区分大小写
- 名称中的非ASCII字符
选择不同的函数。这不是一个你想在本地进行的必要的操作,但这并不能回答我的问题。这是一个QE角色的面试问题。这就是为什么我把它作为评论而不是答案发布。哦,我明白了。谢谢,好的开始。如果列可以为空,我会添加空名称。
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);
}