java - 使用包含在 testng 中断言

标签 java eclipse testng assert

我正在使用 Java 和 testng。我有两组字符串:validSet 和actualSet。 我想通过断言检查actualSet中的所有内容都在validSet中(即actualSet(- validSet。(我正在使用(-表示是的子集)。 有一个assertContains(desc, collection1, object)。我尝试了这个,但它采用了我的actualSet并将其放入像“[item1,item2,item3]”这样的字符串形式,而不是将其视为一个集合。

有一个包含两个集合的assertCollectionEquals()。我想如果我可以删除 validSet 中不包含在 effectiveSet 中的所有内容,那么我可以检查两者是否相等。如果不是,那么我就知道 validSet 中不包含actualSet。

我可以做如下的事情:

for (String act : actual ) {
    assertTrue( act + " is not valid", validSet.contains(act);
}

但是集合断言的好处是它们将列出不在 validSet 中的每个字符串,而上面的示例将仅列出第一个遇到的字符串,然后失败。

我正在尝试考虑调用的方法,以便比较两个集合应该相等。如何从一组中删除另一组中不存在的所有值?

谢谢

最佳答案

一种解决方案可能是使用循环构建错误消息,然后在循环后使用该错误消息进行断言。像这样的东西:

  boolean fail = false ;
  List<String> actNotInValid = new ArrayList<>();
  for(String act: actual) {
    if(!validSet.contains(act)) {
      fail = true ;
      actNotInValid.add(act);
    }
  }

  assertFalse(actNotInValid.toString(), fail);

关于java - 使用包含在 testng 中断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32330676/

相关文章:

java - 如何根据用户所属的国家/地区设置区域设置值

java - Eclipse 中的冲突目录颠覆 (svn :ignore file? )

java - : "TestNG Result Listening Job". 期间发生内部错误 端口值超出范围:-1

java - 关于java/TestNG的一个基本问题

testng - 可以将参数传递给TestNG DataProvider吗?

java - Android ListView 中的阿拉伯文字

Java 语法 - 如果不使用代码块

java - 使用 UUID.randomUUID(),类型 4 UUID

java - 图像到字节[]到图像

Android:Eclipse 不会将新版本的应用程序推送到模拟器