java - 从 Json 路径查询返回并在 Junit 断言中使用的字符串的排序

标签 java string junit hashset jsonpath

新手问题:

我必须针对页面上的地址进行断言。我首先查询 API 以获取地址,然后在网页上对其进行断言。

这是我从 API 获取数据的方法:

   public Set<String> getPlaceAddressLinesFromApi(String addressId) {

    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet("http://app.ard.domain.local:8084/addresses/" + addressId);

    try {
        HttpResponse response = client.execute(request);
        HttpEntity entity = response.getEntity();
        String content = EntityUtils.toString(entity);
        String json = content.toString();
        Set<String> addresslines = new HashSet<String>();
        addresslines.add(JsonPath.read(json, "$.location.postalAddress.lines[0]").toString());
        addresslines.add(JsonPath.read(json, "$.location.postalAddress.town").toString());
        addresslines.add(JsonPath.read(json, "$.location.postalAddress.county").toString());
        addresslines.add(JsonPath.read(json, "$.location.postalAddress.postcode").toString());
        return addresslines;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;

}

当我在断言中使用该方法时,出现错误:

assertEquals(addressLinesFromApi, addressLinesFromWebsite, "The address displayed and address returned from api do not match");

Expected :TownHouse, Exeter, Devon, EX15 2LE
Actual   :[Exeter, Devon, EX15 2LE, TownHouse]

如何订购从 JSON 返回的字符串以在断言中使用?

如何删除“[]”括号?

最佳答案

您可以将 addressLinesFromWebsite,\\s* 拆分为 HashSet 并进行比较:

assertEquals(addressLinesFromApi, new HashSet<String>(Arrays.asList(addressLinesFromWebsite.split(",\\s*"))), "The address displayed and address returned from api do not match");

关于java - 从 Json 路径查询返回并在 Junit 断言中使用的字符串的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31648802/

相关文章:

java - 如果我向非 sleep 线程发送许多中断会有害吗

java - Spring Controller RequestMapping PathVariable 中 URL 的零长度部分破坏了解析

php - 在 PHP 中替换字符串的最快方法

c++ - 如何使用 visual c++ 中的 strncpy_s 函数?

c# - 拆分没有分隔符的字符串

java - 测试 Spring 批量作业步骤范围

java - 如何将 GPS 点从 DDD MM.MMM(字符串)转换为十进制(纬度和经度)?

java - JList 中的动态可见行数

java - 如何仅模拟函数的一部分

java - 将代码库从 SimpleMailMessage 更改为 MimeMessage 后单元测试中断