我在其构造函数中执行验证的记录如下:
public record Configuration(URI url) {
public Configuration(URI url) {
Validate.httpValid(url, "url");
}
}其中,httpValid方法是:
public static URI httpValid(final URI value, final String property) {
try {
value.toURL();
} catch (IllegalArgumentException | MalformedURLException e) {
throw new InvalidPropertyValueException(property, "httpValid", value, Map.of());
}
return value;
}然而,这失败了我试图创建的测试:
@Test
void Should_RespectEqualsContract() {
EqualsVerifier
.forClass(Configuration.class)
.withPrefabValues(
Configuration.class,
new Configuration(URI.create("http://a.com")),
new Configuration(URI.create("http://b.com")))
.verify();
}这是因为EqualsVerifier试图创建一个以"x“作为参数的对象:InvalidPropertyValueException: The value x is not a valid httpValid as url
发布于 2021-11-05 07:13:38
你们很亲密。您不应该将正在测试的类作为预置值提供;相反,您需要提供引起麻烦的参数,如下所示:
@Test
void Should_RespectEqualsContract() {
EqualsVerifier
.forClass(Configuration.class)
.withPrefabValues(
URI.class,
URI.create("http://a.com"),
URI.create("http://b.com"))
.verify();
}https://stackoverflow.com/questions/69811066
复制相似问题