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方法检查引用相等性.