使用SQL子查询对表中的行数进行计数,并根据结果通过/失败Java测试

斯维格

以下是我的两个SQL Server表。

地址

addressId | addressName |
2         | testAddress |

链接

linkId | clientId | addressId |
1      | 4        | 2         |

我正在尝试编写一个Java测试,该测试使用SQL子查询来检查taddress中是否存在记录。

例如:

SELECT COUNT(*) FROM Taddress
WHERE addressId =
(SELECT addressId FROM Tlink
WHERE clientId = param)

目前,当我运行以下测试时,即使tLink中不存在clientId参数,该测试也始终会通过。

try {
        dbAccessSetUp();
        ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM taddress a INNER JOIN tlink l on a.address_id = l.internal_address_id WHERE l.ext_client_id =" + this.clientNo);

        if(!rs.next()) {
            fail("Record does not exist in taddress based on ExtClientNo");
        }

        int count = 0;

        while(rs.next()) {              

            count = rs.getInt(1);
            System.out.println("number of count : " + count);
            assertTrue(0 < count);
        } 
        rs.close(); 
    } catch(SQLException se) { 
        se.printStackTrace(); 
        assertEquals(true, false);
    } catch(Exception e) { 
        e.printStackTrace();
        assertEquals(true, false);
    } finally { 
        try { 
            if(stmt!=null) stmt.close();  
        } catch(SQLException se2) {
            assertEquals(true, false);
        } 
        try { 
            if(conn!=null) conn.close(); 
        } catch(SQLException se) {
            se.printStackTrace(); 
            assertEquals(true, false);
        } 
    } 
用户名

根据上面的代码示例,这应该适合您:

try {
        dbAccessSetUp();
        ResultSet rs = stmt.executeQuery("SELECT COUNT(*)FROM taddress A INNER JOIN tlink L ON A.address_id = L.internal_address_id WHERE L.ext_client_id =" + this.clientNo);
        int count=0;
        while(rs.next()) {
            count =  ((Number) rs.getObject(1)).intValue();

        }

        if(count > 0) {
            assertTrue(true);
            System.out.println(count + " record(s) in taddress based on ExtClientNo");
        }
        else {
            fail("No records in taddress");
        }

    }catch(Exception ex) {
        System.out.println(ex.getMessage());
    }

如果出现以下情况,它将失败:

  • 您的客户端的tlink中没有匹配的记录
  • tlink中有匹配的记录,但taddress中没有匹配的记录

如果通过,将通过:

  • tlink中有一条匹配的记录&taddress中有一条匹配的记录

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WebStorm中通过断言的测试通过失败

根据 SQL 按顺序对表中的每个出现进行计数

SQL Select语句可以对表中的行进行计数,而不是主查询中的行

SQL - 在子查询中获取对表的引用

SQL 对表列进行计数

如何使用SQL查询在父级和子级之间对表记录进行排序

如何跳过失败的测试

PostgreSQL:对表2中不同行的表1中的行数进行计数

在 TravisCI 上使用 Detox 进行测试时,如何获得写入变量/文件的测试(失败/通过)结果

使用子查询对 EF Core 中的结果进行排序

对表中的所有记录进行 sql 限制查询

使用IF的子查询中的SQL TOP 10按计数排序

通过将查询结果连接到子查询来检查数据质量,方法是将查询中的测试数据与union all一起使用

有没有办法通过失败的测试运行基准测试?

SQL-根据查询结果从一张表中获取计数

SQL根据子查询返回的行数插入多行

我想在ruby中执行sql查询以使用结果在我的视图中进行一些测试

通过急切的结果进行订单记录计数并根据Objection.js中的记录进行分页?

SQL查询以根据最大常见结果对结果进行排序

如何使用Cake(C#make)脚本在xunit中通过和失败测试用例计数

使用子查询中的计数来确定结果行中是否应包含行

通过子查询进行SQL筛选

如何通过失败的JUnit4测试使`groovy`命令退出不为零?

在SQL子查询中聚合计数

根据通过表单的输入进行查询并显示结果

使用子查询进行外部联接会更改mysql中的行数

通过sql查询进行数据类型转换

使用JOIN进行SQL查询计数

使用SQL查询进行排名计数