【发布时间】:2022-07-20 22:54:42
【问题描述】:
这是我的 if 语句。我只想写短一点。因为我认为这些都是无效的。顺便说一下,每个 if 语句都是独立的。
String actual_createdDate = "^\\d{13}$";
String actual_modifiedDate = "^\\d{13}$";
...
for (int i = 0; i < count; i++) {
if (js.getBoolean("[" + i + "].createdDate")) {
String a = js.get("[" + i + "].createdDate").toString();
Assert.assertTrue(a.matches(actual_createdDate));
}
if (js.getBoolean("[" + i + "].lastModifiedDate")) {
String b = js.get("[" + i + "].lastModifiedDate").toString();
Assert.assertTrue(b.matches(actual_modifiedDate));
}
if (js.getBoolean("[" + i + "].uuid")) {
String c = js.get("[" + i + "].uuid").toString();
Assert.assertTrue(c.matches(actual_uuid));
}
if (js.get("[" + i + "].coverPhoto") != null) {
String d = response1.jsonPath().get("[" + i + "].coverPhoto.tempDownloadURL").toString();
Assert.assertTrue(d.matches(actual_temp_url));
System.out.println(js.get("[" + i + "].coverPhoto.tempDownloadURL").toString() + " is equalent to : " + actual_temp_url);
}
if (js.get("[" + i + "].coverPhoto.metadata['Thumbnail-Large']") != null) {
String e = response1.jsonPath().get("[" + i + "].coverPhoto.metadata['Thumbnail-Large']").toString();
Assert.assertTrue(e.matches(actual_metaData_url));
System.out.println(js.get("[" + i + "].coverPhoto.metadata['Thumbnail-Large']").toString() + " is equalent to : " + actual_metaData_url);
}
}
【问题讨论】:
-
不管 ifs
js.getBoolean("[" + i + "].createdDate")看起来很糟糕。 -
除了只使用一个通用字符串而不是定义 5 个不同的字符串之外,我看不清楚在哪里可以缩短它...
-
没有理由重复构建
"[" + i + "]",重复构建路径名;每件事只构建一次。 -
@luk2302 实际上我的回复有重复的数据。我只想检查所有数据的值。我使用正则表达式作为测试数据。例如,如果响应中不存在封面照片,我不想得到错误,这就是为什么使用 js.getBoolean("[" + i + "].createdDate") 。
标签: java if-statement rest-assured