JUnit 的 hamcrest 库是否有一个 API 来测试 public 变量而不是属性
Does the hamcrest library for JUnit has an API to test public variables rather than properties
我正在尝试测试 public 具有特定值的变量。问题是我正在测试 public 变量,而不是 JavaBean。
Assert.assertThat(clientMapper.entries, Matchers.<ClientMapper.MapperEntry>hasItem(
Matchers.allOf(
Matchers.hasProperty("from", Matchers.is("/v1")),
Matchers.hasProperty("to", Matchers.is("/v2"))
)
));
而我正在测试的 class 是
public static class MapperEntry {
public String from;
public String to;
}
测试失败是因为没有找到JavaBean属性from
和to
,可以理解,但是如何测试public字段呢?
更新:我正在尝试为 java 7
寻找解决方案
我不这么认为。 Public 字段在 Java 中很少见,这可能就是没有字段的原因。您必须自己编写 Matcher
来处理这个问题。
如果 class 有适当的 toString()
实现,那么您可以使用字符串或正则表达式匹配器。
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"))
)));
我正在尝试测试 public 具有特定值的变量。问题是我正在测试 public 变量,而不是 JavaBean。
Assert.assertThat(clientMapper.entries, Matchers.<ClientMapper.MapperEntry>hasItem(
Matchers.allOf(
Matchers.hasProperty("from", Matchers.is("/v1")),
Matchers.hasProperty("to", Matchers.is("/v2"))
)
));
而我正在测试的 class 是
public static class MapperEntry {
public String from;
public String to;
}
测试失败是因为没有找到JavaBean属性from
和to
,可以理解,但是如何测试public字段呢?
更新:我正在尝试为 java 7
寻找解决方案我不这么认为。 Public 字段在 Java 中很少见,这可能就是没有字段的原因。您必须自己编写 Matcher
来处理这个问题。
如果 class 有适当的 toString()
实现,那么您可以使用字符串或正则表达式匹配器。
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"))
)));