gpt4 book ai didi

使用 Hamcrest 进行 Java Junit 测试 : cannot create compositional Matcher

转载 作者:行者123 更新时间:2023-12-02 02:13:46 24 4
gpt4 key购买 nike

我是 Java 单元测试新手,在复制我在教程中执行的操作时遇到了一些麻烦。

我有一个电子邮件类,它有很多属性,但其中有 firstName .

private final String firstName;
public String getFirstName() {
return firstName;
}

第一个名称以标准方式在构造函数中设置:

this.firstName = firstName;

我编写了一个测试来测试电子邮件是否包含名字。设置后测试如下所示:

@Test
public void emailIsCreated() {
assertThat(em1, hasProperty("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 之前成功执行此操作时),但这似乎不对......有人知道我在这里做错了什么吗?

最佳答案

您正在导入hasProperty来自错误的地方。 HasProperty没有带有签名 (String, org.hamcrest.Matcher<java.lang.String>) 的方法如错误消息所示,您可以仔细检查上面的 java API 文档。

Matchers另一方面都有 hasPropertyHasProperty 导入的方法和 HasPropertyWithValue

因此解决方法是更改​​导入并使用 org.hamcrest.Matchers.hasProperty而不是org.hamcrest.beans.HasProperty.hasProperty

关于使用 Hamcrest 进行 Java Junit 测试 : cannot create compositional Matcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49588325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com