java - JUnit,比较对象

标签 java regex unit-testing testing junit

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

@Test
public void testTwoCompiledPattern()
{   
    assertEquals(Pattern.compile("test"), Pattern.compile("test"));
}

这个通过:

@Test
public void testTwoCompiledPattern()
{   
    assertEquals(Pattern.compile("test").toString(), Pattern.compile("test").toString());
}

最佳答案

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

equals 方法检查引用是否相等。

关于java - JUnit,比较对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11028854/

相关文章:

java - 如何正确地单元测试 "abstracted"文件处理?

java - 将大量数据传递给 Java 函数的有效方法是什么?

java - 如何根据另一个 ArrayList 的顺序对多个 ArrayList 进行排序?

java - android 读/写用户首选项

java - 在 Hibernate 中将一个数据库关联拆分为多个集合

asp.net - 如何使用 asp.net 从字符串中删除 HTML 标签(粗体、粗体、字体名称等)

regex - 使用 sed 将字母 [a-z] 和 [A-Z] 和 ['] 替换为下划线

php - 干净的 javascript 注释类型//的正则表达式

angular - 在 Angular 中模拟 NgbModal

c# - Moq.CaSTLeProxyFactory' 无法加载文件或程序集 'CaSTLe.Core