问题描述
此代码需要测试,但我无法解决错误。 Boolean isValid 是需要测试的方法。
public boolean isValid(String email)
{
String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\."+
"[a-zA-Z0-9_+&*-]+)*@" +
"(?:[a-zA-Z0-9-]+\\.)+[a-z" +
"A-Z]{2,7}$";
Pattern pat = Pattern.compile(emailRegex);
if (email == null)
return false;
return pat.matcher(email).matches();
}
Getting error in writing test case: Cannot invoke isEqualTo(boolean) on the primitive type boolean
@Test
public void isValidtest() {
Validation v = new Validation();
String email = "bhavya@gmail.com";
assertEquals(v.isValid(email).isEqualTo(true)); //this line gives the error.
}
解决方法
assertEquals(v.isValid(email).isEqualTo(true);
这一行在很多方面都是错误的。
- 括号甚至不对齐。
-
isEqualTo
不是以assertEquals
开头 - 它以assertThat
开头。您正在混合两种完全不同的方式来编写测试。 - 由于缺少括号,您现在尝试对原始布尔值调用
.isEqualTo
。它不是一个对象,primitiveExpression.anything
在 Java 中不起作用。
你大概想要:
assertThat(v.isValid(email)).isEqualTo(true);
或更可能:
assertTrue(v.isValid(email));
,
//您可以尝试使用assertTrue并通过isValid()传递值类型返回
@Test
public void isValidTest() {
Validation v = new Validation();
String email = "bhavya@gmail.com";
Boolean value = v.isValid(email);
assertTrue(value);
}