Thanks @Zarashima!
That worked for my simple example:
//this worked fine and pass/failed as expected
String actual = “{id:123, name:“John”}”;
JSONAssert.assertEquals("{id:123,name:“John”}", actual, JSONCompareMode.LENIENT);
but not when I tried it with my actual WS response. I tried:
//parseText
def parsedJson1 = new groovy.json.JsonSlurper().parseText(response1.getResponseBodyContent())
def parsedJson2 = new groovy.json.JsonSlurper().parseText(response2.getResponseBodyContent())
//these did not work (errors below)
- JSONAssert.assertEquals(response1, response1, JSONCompareMode.LENIENT)
- JSONAssert.assertEquals(parsedJson1, parsedJson2, JSONCompareMode.LENIENT)
- JSONAssert.assertEquals(parsedJson1.toString(), parsedJson2.toString(), JSONCompareMode.LENIENT)
Error for each:
1
Possible solutions: assertEquals(java.lang.String, java.lang.String, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, org.json.JSONArray, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, org.json.JSONObject, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(org.json.JSONArray, org.json.JSONArray, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(org.json.JSONObject, org.json.JSONObject, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, java.lang.String, boolean)
at com.ws.Compare.invokeMethod(Compare.groovy)
at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:49)
at location_compare.run(location_compare:18)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:328)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:319)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:298)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:290)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:224)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:106)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:97)
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
at TempTestCase1546810597945.run(TempTestCase1546810597945.groovy:22)
Caused by: groovy.lang.MissingMethodException: No signature of method: static org.skyscreamer.jsonassert.JSONAssert.assertEquals() is applicable for argument types: (com.kms.katalon.core.testobject.ResponseObject, com.kms.katalon.core.testobject.ResponseObject, org.skyscreamer.jsonassert.JSONCompareMode) values: [200 86 KB, 200 86 KB, LENIENT]
Possible solutions: assertEquals(java.lang.String, java.lang.String, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, org.json.JSONArray, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, org.json.JSONObject, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(org.json.JSONArray, org.json.JSONArray, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(org.json.JSONObject, org.json.JSONObject, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, java.lang.String, boolean)
at com.ws.Compare.compareWsResponses(Compare.groovy:46)
at com.ws.Compare.invokeMethod(Compare.groovy)
at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:49)
2
org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: static org.skyscreamer.jsonassert.JSONAssert.assertEquals() is applicable for argument types: (java.util.ArrayList, java.util.ArrayList, org.skyscreamer.jsonassert.JSONCompareMode) values: [[[AdministrativeArea:[CountryID:BD, EnglishName:Dhaka, EnglishType:Division, …], …], …], …]
Possible solutions: assertEquals(java.lang.String, java.lang.String, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, org.json.JSONArray, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, org.json.JSONObject, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(org.json.JSONArray, org.json.JSONArray, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(org.json.JSONObject, org.json.JSONObject, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, java.lang.String, boolean)
at com.ws.Compare.invokeMethod(Compare.groovy)
at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:49)
at location_compare.run(location_compare:18)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:328)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:319)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:298)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:290)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:224)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:106)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:97)
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
at TempTestCase1546810990914.run(TempTestCase1546810990914.groovy:22)
Caused by: groovy.lang.MissingMethodException: No signature of method: static org.skyscreamer.jsonassert.JSONAssert.assertEquals() is applicable for argument types: (java.util.ArrayList, java.util.ArrayList, org.skyscreamer.jsonassert.JSONCompareMode) values: [[[AdministrativeArea:[CountryID:BD, EnglishName:Dhaka, EnglishType:Division, …], …], …], …]
Possible solutions: assertEquals(java.lang.String, java.lang.String, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, org.json.JSONArray, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, org.json.JSONObject, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(org.json.JSONArray, org.json.JSONArray, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(org.json.JSONObject, org.json.JSONObject, org.skyscreamer.jsonassert.JSONCompareMode), assertEquals(java.lang.String, java.lang.String, boolean)
at com.ws.Compare.compareWsResponses(Compare.groovy:46)
at com.ws.Compare.invokeMethod(Compare.groovy)
at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:49)
at Script1546631654104.run(Script1546631654104.groovy:18)
3
Test Cases/LocationAPI/Compare/location_compare FAILED.
Reason:
org.json.JSONException: Expected a ‘,’ or ‘]’ at 21 [character 22 line 1]
at org.json.JSONTokener.syntaxError(JSONTokener.java:505)
at org.json.JSONArray.<init>(JSONArray.java:145)
at org.json.JSONTokener.nextValue(JSONTokener.java:434)
at org.json.JSONArray.<init>(JSONArray.java:125)
at org.json.JSONArray.<init>(JSONArray.java:162)
at org.skyscreamer.jsonassert.JSONParser.parseJSON(JSONParser.java:46)
at org.skyscreamer.jsonassert.JSONCompare.compareJSON(JSONCompare.java:49)
at org.skyscreamer.jsonassert.JSONCompare.compareJSON(JSONCompare.java:125)
at org.skyscreamer.jsonassert.JSONAssert.assertEquals(JSONAssert.java:415)
at org.skyscreamer.jsonassert.JSONAssert.assertEquals(JSONAssert.java:394)
at org.skyscreamer.jsonassert.JSONAssert$assertEquals.call(Unknown Source)
at com.ws.Compare.compareWsResponses(Compare.groovy:48)
at com.ws.Compare.invokeMethod(Compare.groovy)
at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:49)
at location_compare.run(location_compare:18)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:328)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:319)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:298)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:290)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:224)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:106)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:97)
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
at TempTestCase1546813775140.run(TempTestCase1546813775140.groovy:22)