Java 如何根据SQL Server查询结果通过/失败测试步骤

Java 如何根据SQL Server查询结果通过/失败测试步骤,java,automated-tests,cucumber,Java,Automated Tests,Cucumber,我正在使用Cucumber/Gherkin语法编写自动化测试用例 一个特定场景涉及验证行是否已成功添加到数据库 因此,我希望测试通过/失败基于一个SELECT语句,该语句检查特定ID是否已持久化到数据库 如果传递到SELECT语句中的ID确实存在,则传递 如果数据库中不存在该ID,则失败 目前,我可以显示行数据,以便持久化ID,但即使查询无效ID,测试仍然通过 以下是我目前的代码: @Then("BR API will insert a record into tBookingRequestR

我正在使用Cucumber/Gherkin语法编写自动化测试用例

一个特定场景涉及验证行是否已成功添加到数据库

因此,我希望测试通过/失败基于一个SELECT语句,该语句检查特定ID是否已持久化到数据库

如果传递到SELECT语句中的ID确实存在,则传递

如果数据库中不存在该ID,则失败

目前,我可以显示行数据,以便持久化ID,但即使查询无效ID,测试仍然通过

以下是我目前的代码:

 @Then("BR API will insert a record into tBookingRequestRejections table in the BR Staging DB tables. The record will contain the error code and error description.")

 public void br_API_will_insert_a_record_into_tBookingRequestRejections_table_in_the_BR_Staging_DB_tables_The_record_will_contain_the_error_code_and_error_description() {

    try {

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        Connection m_Connection = DriverManager.getConnection(DETAILS);
        Statement m_Statement = m_Connection.createStatement();         
        String query = "select top 10 * from tBookingRequest where request_id = " + idNumber; 

        ResultSet m_ResultSet = m_Statement.executeQuery(query);

        while (m_ResultSet.next()) {
            System.out.println("HERE: " + m_ResultSet.getString(1) + ", " + m_ResultSet.getString(2) + ", "
                    + m_ResultSet.getString(3));
        }
    }
    catch(Exception ex) {
        System.out.println(ex.toString());
    }
如何根据此查询返回的值使Cucumber测试通过/失败


非常感谢你的帮助

通常,在进行cuking时,您应该通过用户界面进行验证,而不是直接查看数据库。如果您的用户看不到已添加的记录,或者您的api没有确认已添加该记录,则该行为是不可见的

这并不意味着你不应该;t测试数据库中的记录它建议您可以编写一个更快的单元测试来完成这项工作,或者您应该改进交互,以便可以测试可见的结果


值得记住的是,编写良好的单元测试可以比Cucumber场景快一个、两个甚至三个数量级,这取决于您的测试内容。

取决于。。。m_ResultSet.getString1在未持久化任何内容时返回空字符串,这是真的吗?然后,您可以使用Junit或Hamcrest中的断言来断言您的结果,并在必要时失败。第二,将逻辑分层,例如加载元素、断言、db等。不要将selenium与Cumber混淆。您可以轻松地使用cucumber来指定完全不使用浏览器运行的场景。因此,以不同的方式编写测试可能是一个好主意,也可能不是一个好主意。我正在测试微服务,没有用户界面我已经与客户交谈过,XML响应模式验证意味着已经添加了记录,现在就足够了。如果您正在测试微服务,那么有两种方法可能比您正在尝试的方法更好。第一个是编写单元测试。第二个是确保服务api有一些东西可以确认在处理服务时已添加记录。用户界面就是服务api。这两种方法都比直接反刍和查看数据库更可取。第一个要快得多。第二种方法确保您的api足以确认您的行为已实现。