为什么我的 soapui 测试用例在安装新的 soapui 版本(5.3.0 -> 5.4.0)后失败

Why does my soapui testcase fail after installing new soapui version (5.3.0 -> 5.4.0)

嘿,我有用 groovy 编写的 SOAPUI 测试用例。在我安装最新版本的 SOAPUI(5.4.0,在 Windows 10 机器上)之前,5.3.0(在 Linux 机器上)的测试很好。使用新版本我得到一个断言失败。似乎创建了一个数组并将其放入索引 0 处的数组中。因此 names.contains("username") 失败。

不明白为什么安装新版SOAPUI后测试失败。

有人知道这里发生了什么吗? 谁有 5.3.0 版的下载,所以我可以用那个版本再次测试?

此致

我确认以下代码在soapui 5.4.0中失败:

import org.json.JSONObject;
def jsonData = '''
{ "aaa":1, "bbb":2 }
'''

def json = new JSONObject(jsonData)
def names = json.names().iterator().toList()

assert names.contains("aaa")
log.info "SUCCESS!!!"

错误:

Assertion failed: assert names.contains("aaa") | | | false [["aaa","bbb"]] error at line: 9

问题:

soapui 5.4.0 包含用于 org.json 包的非常旧的库:json-20090211.jar

其他版本:https://mvnrepository.com/artifact/org.json/json


解决方法

  1. 将soapui的lib文件夹中的json-20090211.jar替换为newer version。但不确定这将如何影响 soapui 本身。

  2. 使用基于 groovy 的 json 解析器重写您的代码:


def jsonData = '''
{ "aaa":1, "bbb":2 }
'''

def json = new groovy.json.JsonSlurper().parseText(jsonData)
def names = json.keySet()

assert names.contains("aaa")
log.info "SUCCESS!!!"