JUnit,比较对象

mt2*_*t22 1 java regex testing junit unit-testing

我正在学习JUnit,我知道assertEquals()调用equals()方法来比较对象...那么为什么以下测试比较两个正则表达式模式对象不通过?

@Test
public void testTwoCompiledPattern()
{   
    assertEquals(Pattern.compile("test"), Pattern.compile("test"));
}
Run Code Online (Sandbox Code Playgroud)

这个通过:

@Test
public void testTwoCompiledPattern()
{   
    assertEquals(Pattern.compile("test").toString(), Pattern.compile("test").toString());
}
Run Code Online (Sandbox Code Playgroud)

小智 7

因为当你调用toString()方法时,两者都返回"test"字符串,因为Pattern类会覆盖它.但是,如果仅比较Pattern对象,它们是2个不同的对象,因此即使它们具有相同的状态,也不等于另一个.

equals方法检查引用相等性.