Integer 可以是原始的,但 assertTrue 变得模棱两可——如何同时满足这两个要求?

Integer can be primitive, but assertTrue becomes ambiguous - how to satisfy both requirements?

我有一段简单的代码,正在测试 Spring 存储库:

//repository is declared in code, doesn't really matter

@Test
public void objectTest() {
    Integer testId = 10;
    TestedObject testObj = repository.getTestedObject(testId);
    assertNotNull(testObj);
    assertEquals(testId, testObj.getId()); //testObj.getId() is an Integer, not int
}

这段代码 给我一个关于 testId 的警告,它可能是原始的

当我将 testId 更改为原语时,出现歧义错误,因为 assertEquals(testId, testObj.getId()) 可以匹配 assertEquals(Object, Object)assertEquals(int, int) 由于 Java 自动装箱功能。

我讨厌不固定的警告,我很想摆脱它们。关于 testId 是非基元的警告 只出现在 IntelliJ IDEA 中,Eclipse 甚至不关心。

我应该:

此外,我想在 testObjgetId() 方法中留下一个整数,以防任何与对象相关的操作,这不能在基元上完成。

答案是:这是一个错误。感谢 for creating bug report on JetBrains. (link here,从评论中复制)。

毕竟我用过,选择了intValue()方法