断言字符串值无法正常工作

时间:2017-11-04 21:53:33

标签: java junit cucumber gherkin

我正在尝试使用Cucumber断言表的表头(在此处找到 - " http://toolsqa.com/automation-practice-table/")。

比较正在发生,应该是平等的,但由于某些原因,我的断言失败了。

我将列出错误,代码和功能文件 -

错误 -

junit.framework.AssertionFailedError: expected:<[Structure]> but was:<Structure>

代码 -

@SuppressWarnings("deprecation")
@Then("^table with id \"([^\"]*)\" has header values of$")
public void tableHeaders(String id, DataTable table) {

    java.util.List<java.util.List<String>> expectedHeaders = table.raw();

    WebElement container = driver.findElement(By.id(id));
    List<WebElement> allHeaders = container.findElements(By.tagName("th"));

    List<String> actualHeaders = new ArrayList<String>();
    for (WebElement header : allHeaders) {
        actualHeaders.add(header.getText().toString());
    }

    for (int i = 0; i < actualHeaders.size(); i++) {
        Assert.assertEquals(expectedHeaders.get(i), actualHeaders.get(i));
    }
}

功能文件 -

Scenario: Test Table Header assertion 
Then table with id "content" has header values of 

    | Structure |
    | Country | 
    | City |
    | Height | 
    | Built | 
    | Rank |
    | ... |

1 个答案:

答案 0 :(得分:2)

就像@ nathan-hughes已经说过的那样:你正在将字符串列表与字符串进行比较。 expectedTitles是字符串列表的列表,stringOfHeaders只是字符串列表。因此

assertEquals(expectedTitles.get(i), stringOfHeaders.get(i))

将字符串列表与字符串进行比较,因此失败。我想你想做的是

assertEquals(expectedTitles.get(i).get(0), stringOfHeaders.get(i))