JUnit的hamcrest库是否具有用于测试公共变量而不是属性的API

时间:2015-11-12 14:46:19

标签: java junit hamcrest

我正在尝试测试具有特定值的公共变量。问题是我正在测试公共变量,而不是JavaBean。

Assert.assertThat(clientMapper.entries, Matchers.<ClientMapper.MapperEntry>hasItem(
    Matchers.allOf(
            Matchers.hasProperty("from", Matchers.is("/v1")),
            Matchers.hasProperty("to", Matchers.is("/v2"))
    )
));

我正在测试的课程是

public static class MapperEntry {
    public String from;
    public String to;
}

测试失败,因为它找不到JavaBean属性fromto,这是可以理解的,但我如何测试公共字段?

更新:我正在尝试为java 7找到解决方案

2 个答案:

答案 0 :(得分:1)

NitorCreations' matchers library有字段匹配器:

Assert.assertThat(clientMapper.entries, Matchers<ClientMapper.MapperEntry>hasItem(
  Matchers.allOf(
        com.nitorcreations.Matchers.hasField("from", Matchers.is("/v1")),
        com.nitorcreations.Matchers.hasField("to", Matchers.is("/v2"))
)));

答案 1 :(得分:0)

我不这么认为。公共领域在Java中很少见,这可能就是为什么没有。您必须编写自己的toString()来处理此问题。

如果该类具有正确的for(name in names(df)){ if(is.factor(df[[name]])){ class(df[[name]]) <- "numeric" #df[[name]] <- as.numeric(df[[name]]) } } 实现,那么您可以使用字符串或正则表达式匹配器。