【问题标题】:Cannot invoke isEqualTo(boolean) on the primitive type boolean无法在原始类型 boolean 上调用 isEqualTo(boolean)
【发布时间】:2021-02-04 12:04:48
【问题描述】:

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

【问题讨论】:

标签: java junit junit4


【解决方案1】:
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));

【讨论】:

  • assertThat 代码也不起作用。 AssertTrue 工作。谢谢你:)
  • assertThat(v.isValid(email)).isTrue();
【解决方案2】:

//你可以试试用assertTrue是不是,通过isValid()传值类型返回

@Test
public void isValidTest() {
   Validation v = new Validation();
   String email = "bhavya@gmail.com";
   Boolean value = v.isValid(email);
   assertTrue(value); 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2016-03-14
    • 2017-06-29
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多