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 甚至不关心。
我应该:
- 转换一个变量?
assertEquals((Integer) testId, testObj.getId())
- 在IDEA中配置警告级别?
此外,我想在 testObj
的 getId()
方法中留下一个整数,以防任何与对象相关的操作,这不能在基元上完成。
答案是:这是一个错误。感谢 for creating bug report on JetBrains. (link here,从评论中复制)。
毕竟我用过,选择了intValue()
方法
我有一段简单的代码,正在测试 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 甚至不关心。
我应该:
- 转换一个变量?
assertEquals((Integer) testId, testObj.getId())
- 在IDEA中配置警告级别?
此外,我想在 testObj
的 getId()
方法中留下一个整数,以防任何与对象相关的操作,这不能在基元上完成。
答案是:这是一个错误。感谢
毕竟我用过intValue()
方法