无法在基本类型 boolean 上调用 isEqualTo(boolean)

问题描述

代码需要测试,但我无法解决错误。 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);

这一行在很多方面都是错误的。

  1. 括号甚至不对齐。
  2. isEqualTo 不是以 assertEquals 开头 - 它以 assertThat 开头。您正在混合两种完全不同的方式来编写测试。
  3. 由于缺少括号,您现在尝试对原始布尔值调用 .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); 
}