带有Hamcrest的Java Junit测试:无法创建组合匹配器
我是Java单元测试新手,在复制我在教程中执行的内容时遇到了一些问题 我有一个email类,它有许多属性,但其中有带有Hamcrest的Java Junit测试:无法创建组合匹配器,java,unit-testing,junit,hamcrest,Java,Unit Testing,Junit,Hamcrest,我是Java单元测试新手,在复制我在教程中执行的内容时遇到了一些问题 我有一个email类,它有许多属性,但其中有firstName private final String firstName; public String getFirstName() { return firstName; } 以标准方式在构造函数中设置第一个名称: this.firstName = firstName; 我已经写了一个测试来测试电子邮件是否包含名字。设置后,测试如下所示: @Test p
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中的hasProperty(String)不能应用于(String,org.hamcrest.Matcher)
我的直觉告诉我,根据消息(以及我在匹配int之前成功执行此操作的事实)对字符串进行等值时存在问题,但这似乎不正确。。。
有人知道我做错了什么吗?您从错误的位置导入了
hasProperty
。没有签名为(String,org.hamcrest.Matcher)
的方法,如错误消息所示,您可以在上面的JavaAPI文档中再次检查
另一方面,具有从和导入的hasProperty
方法
因此,解决方法是更改导入并使用
org.hamcrest.Matchers.hasProperty
而不是org.hamcrest.beans.hasProperty.hasProperty
从错误的位置导入hasProperty
。没有签名为(String,org.hamcrest.Matcher)
的方法,如错误消息所示,您可以在上面的JavaAPI文档中再次检查
另一方面,具有从和导入的hasProperty
方法
因此,解决方法是更改导入并使用org.hamcrest.Matchers.hasProperty
而不是org.hamcrest.beans.hasProperty.hasProperty