java—如何在数据库列状态更新时编写循环

njthzxwz  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(372)

我是Kotlin编程新手。
我创建了一个maven自动化项目 TestNG . 我使用测试注解作为@ Test(invocationCount = 4) 重复相同的测试4次。我用的是 TimeUnit.SECONDS.sleep(30) 代码停止我的测试大约30秒。但这对我来说并不像预期的那样有效。因此,我计划编写一个循环,在数据库中更新订单状态时运行测试。
当我运行get api调用时,它返回一个 JSON 响应主体如下

{
    "id": 13,
    "orderNo": "87748",
    "isVerificationRequired": false,
    "paymentMethodType": "CreditCard",
    "paymentMethod": {
        "paymentstatus": "VerificationRequired",
        "dateLastUsed": 1608848423000,
        "dateCreated": 1608848177000,
        "dateUpdated": 1608848423000
    },
    "invoice": {
        "Invoicestatus": "Completed",
        "dateCreated": 1608848180000
    },
    "dateCreated": 1608848180000,
    "dateUpdated": 1608848266000,
    "orderstatus": "Authorized"
}

在上面的json响应中,当存储过程触发时,orderstatus每30秒更新一次。orderstatus更新如下
授权在30秒内完成
在第二个30秒内完成
决定在最后30秒内交货。
所以我的问题是,我想编写一个循环,不断检查数据库状态,当orderstatus从authorized变为implementing时,getapi应该再次运行。当orderstatus在30秒后再次更改时,getapi应该再次从满足运行到解决。
请找到下面的代码,请让我知道哪里可以添加for或while循环。
代码:

@Test(invocationCount = 4)
fun GetOrderByID() {
        RestAssured.baseURI = baseQAURL
        //Test the Create Order POST API
        val response = RestAssured.given()
                .log()
                .all()
                .contentType(ordercontentType)
                .`when`()
                .get("/orders/13")
                .then()
                .log()
                .all().extract().response().thenReturn()
        assertEquals(response.statusCode, 200)
        if (response.statusCode == 200) {
            //connect to db and run query
            var database = DbConnection()
            var con = database.connection()
            var statement = con?.createStatement()
            val query = CreateOrderQuery + JsonIncommOrderID.toString()
            val SQLqueryResult = statement?.executeQuery(query)
            //if condition to check the SQLqueryResult is not null
            if (SQLqueryResult != null) while (SQLqueryResult.next()) {
                DBOrderStatus = SQLqueryResult.getString("status")
            }
            // Read json response body and store the required value in a variable.
            val createOrderIcSB: StringBuilder = StringBuilder(response.getBody().asString())
            val createOrderIcJsonObj: JsonObject = parser.parse(createOrderIcSB) as JsonObject
            JsonOrderStatus = createOrderIcJsonObj.string("status").toString()
            assertEquals(JsonOrderStatus, DBOrderStatus)
        }
        TimeUnit.SECONDS.sleep(30)
    }

在此处输入图像描述
有人能帮我吗?拜托。。。。。。。。。。。。。。。。。。。。。。。。。。。。告诉我怎么做就行了。
我在谷歌上搜索,找到了等待的方法。有谁能告诉我这是不是正确的方法。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题