我不熟悉Java中的单元测试,并且在复制我在教程中执行的操作时遇到了一些麻烦。
我有一个电子邮件类,其中包含许多属性,但其中包含firstName
。
private final String firstName;
public String getFirstName() {
return firstName;
}
第一个名称以标准方式在构造函数中设置:
this.firstName = firstName;
我已经编写了一个测试来测试该电子邮件是否包含名字。设置完成后,测试如下:
@Test
public void emailIsCreated() {
assertThat(em1, hasProperty("firstName"));
}
此测试通过。 我的问题是我试图用组合匹配器来扩展测试以匹配firstname的值,如下所示:
@Test
public void emailIsCreated() {
assertThat(em1, hasProperty("firstName", equalTo("Jon")));
}
但是我一直收到一个编译错误:
hasProperty (String) in HasProperty cannot be applied to (String, org.hamcrest.Matcher<java.lang.String>)
我的直觉告诉我,根据消息将字符串等同(以及在我匹配int之前成功执行此操作的事实),这有一个问题,但这看起来并不合适...... 有谁知道我在这里做错了什么?
答案 0 :(得分:2)
您从错误的地方导入hasProperty
。 HasProperty没有带有签名(String, org.hamcrest.Matcher<java.lang.String>)
的方法,因为会显示错误消息,您可以仔细检查上面的java API文档。
Matchers同时从HasProperty和HasPropertyWithValue导入了hasProperty
个方法。
因此,修复方法是更改导入并使用org.hamcrest.Matchers.hasProperty
而不是org.hamcrest.beans.HasProperty.hasProperty