Karate 在第一个场景中使用DBUtils时出错

Karate 在第一个场景中使用DBUtils时出错,karate,Karate,当我在Eclipse中使用DBUtils.java并在那里运行测试时,它工作得很好,但是当我通过Jenkins运行它时,第一次使用DBUtils是失败的。第二部作品。。。 它第一次使用db.readRows时失败 Scenario: Account Create Given path 'accounts' And header Authorization = setup.authorization And request {identifier: KarateC

当我在Eclipse中使用DBUtils.java并在那里运行测试时,它工作得很好,但是当我通过Jenkins运行它时,第一次使用DBUtils是失败的。第二部作品。。。 它第一次使用db.readRows时失败

    Scenario: Account Create

    Given path 'accounts'
    And header Authorization = setup.authorization
    And request {identifier: KarateCreation, subscribers:[{identifier:KarateCreation, firstName:KarateCreation, lastName:KarateCreation}]}
    When method POST
    And match response contains { id: '#number', identifier: KarateCreation }
    Then status 201

    * def id = response.id
    * def accountNumber = response.identifier

    # use jdbc to validate
    * def config = { url: #(dbConnectionString), driverClassName: 'oracle.jdbc.OracleDriver' }
    * def DbUtils = Java.type('restapi.util.DbUtils')
    * def db = new DbUtils(config)

    * def rs = db.readRows("SELECT ACCOUNTID, ACCOUNTNUMBER FROM ACCOUNT WHERE ACCOUNTNUMBER = 'KarateCreation'")
    * match rs contains { ACCOUNTID: '#(id)', ACCOUNTNUMBER: KarateCreation }
错误:

   * def rs = db.readRows("SELECT ACCOUNTID, ACCOUNTNUMBER FROM ACCOUNT WHERE ACCOUNTNUMBER = 'KarateCreation'")(Scenario: Account Create)  Time elapsed: 0.039 sec  <<< ERROR!
  java.lang.RuntimeException: javascript evaluation failed: db.readRows("SELECT ACCOUNTID, ACCOUNTNUMBER FROM ACCOUNT WHERE ACCOUNTNUMBER = 'KarateCreation'")
at com.intuit.karate.ScriptBindings.eval(ScriptBindings.java:115)
at com.intuit.karate.ScriptBindings.updateBindingsAndEval(ScriptBindings.java:103)
at com.intuit.karate.ScriptBindings.evalInNashorn(ScriptBindings.java:88)
at com.intuit.karate.Script.evalJsExpression(Script.java:362)
at com.intuit.karate.Script.evalKarateExpression(Script.java:284)
at com.intuit.karate.Script.evalKarateExpression(Script.java:170)
at com.intuit.karate.Script.assign(Script.java:598)
at com.intuit.karate.Script.assign(Script.java:524)
at com.intuit.karate.StepDefs.def(StepDefs.java:305)
at ✽.* def rs = db.readRows("SELECT ACCOUNTID, ACCOUNTNUMBER FROM ACCOUNT WHERE ACCOUNTNUMBER = 'KarateCreation'")(restapi/accounts/accounts.feature:31)
  Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLRecoverableException: IO Error: Connection reset

*def rs=db.readRows(“从ACCOUNT WHERE ACCOUNT Number='KarateCreation'”中选择ACCOUNTID,ACCOUNTNUMBER)(场景:ACCOUNT Creation)经过的时间:0.039秒首先,我要轻轻提醒您,
DBUtils.java
是作为演示示例创建的,不是空手道核心的一部分。因为这样的问题,我开始后悔把这个放在那里。看

编辑-由于这个问题经常出现:您需要编写自己的代码来连接到数据库,执行SQL并以您想要的方式解压结果。请不要用“
karate

无论如何,请与您的团队或组织中的某个人一起解决此问题:

Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: 
Could not get JDBC Connection; nested exception is
java.sql.SQLRecoverableException: IO Error: Connection reset

很可能您的Jenkins box无法建立与数据库的连接,端口被防火隔离等等。

首先,我要轻轻提醒您,
DBUtils.java
是作为演示示例创建的,不是空手道核心的一部分。因为这样的问题,我开始后悔把这个放在那里。看

编辑-由于这个问题经常出现:您需要编写自己的代码来连接到数据库,执行SQL并以您想要的方式解压结果。请不要用“
karate

无论如何,请与您的团队或组织中的某个人一起解决此问题:

Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: 
Could not get JDBC Connection; nested exception is
java.sql.SQLRecoverableException: IO Error: Connection reset

很可能是您的Jenkins box无法与数据库建立连接,并且端口被防火隔离等。

嗨,Peter。我没有责怪DBUtil,因为它工作得非常好。我不知道为什么第一次使用Jenkins时无法连接。第一个场景显示了该错误,但在第二个场景中有效on@CarolCastro我试图提供一个答案。也许其他人能提供更好的,但我怀疑。谢谢。如果我发现了什么,我会让你知道:)我可以解决这个问题:解决方案2-通用Java JVM解决方案看看$Java_HOME/jre/lib/security/Java.security将securerandom.source=file:/dev/random改为securerandom.source=file:/dev/urandom@CarolCastro哇,这很有趣,我不知道!谢谢,你好,彼得。我没有责怪DBUtil,因为它工作得非常好。我不知道为什么第一次使用Jenkins时无法连接。第一个场景显示了该错误,但在第二个场景中有效on@CarolCastro我试图提供一个答案。也许其他人能提供更好的,但我怀疑。谢谢。如果我发现了什么,我会让你知道:)我可以解决这个问题:解决方案2-通用Java JVM解决方案看看$Java_HOME/jre/lib/security/Java.security将securerandom.source=file:/dev/random改为securerandom.source=file:/dev/urandom@CarolCastro哇,这很有趣,我不知道!谢谢