Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Hamcrest的Java Junit测试:无法创建组合匹配器_Java_Unit Testing_Junit_Hamcrest - Fatal编程技术网

带有Hamcrest的Java Junit测试:无法创建组合匹配器

带有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

我是Java单元测试新手,在复制我在教程中执行的内容时遇到了一些问题

我有一个email类,它有许多属性,但其中有
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