【问题标题】:Java Set Testing [duplicate]Java集测试[重复]
【发布时间】:2017-04-12 17:37:15
【问题描述】:

我有一个 Java 对象,其中包含另一个作为集合的 Java 对象。例如:

Public States {
      private Set<City> cities = new HashSet(0);
       // Setters and Getters Here
      }

 Public City {
      private String dummyValue;
      // Setters and Getters Here
      }

我想测试这个对象以确保它包含我在方法中修改的值。例如我正在尝试:

Set<City> citySet = citySetInfoFromAnotherMethod;
assert citySet.iterator().next().equals("Dallas");

但是我知道这不会起作用,因为 Set 没有像列表那样的顺序。

因此,总而言之,我可以通过什么方式测试这个对象,以查看在我对其执行某些操作后是否会出现另一个方法分配给它的值。

【问题讨论】:

  • 是的。不要使用集合。
  • 有点不清楚,你想测试一些 Set 的第一个元素吗?或者该集合包含一些东西?你想做什么?
  • 我想测试集合中的 dummyValue 是否等于某个值,例如“Dallas”
  • 所以您想测试在集合中至少有一个City 的名称为"Dallas"

标签: java junit set


【解决方案1】:

您可以使用出色的 Hamcrest 匹配器库来实现您想要的(它内置于早期版本的 JUnit,但不包含在更高版本中)。

你会想做这样的事情:

Set<City> citySet = citySetInfoFromAnotherMethod;
assertThat(citySet, contains("Dallas"));

这当然行不通,因为您的设置项是 City 对象,而不是 String,但您也可以使用更多 Hamcrest 匹配器来实现这一点!

Set<City> citySet = citySetInfoFromAnotherMethod;
assertThat(citySet, contains(hasProperty("Name", eq("Dallas"))));

另外(恕我直言,更好)的方法是使用 Hamcrest 的属性匹配器来提取城市名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2015-12-20
    • 1970-01-01
    相关资源
    最近更新 更多