Java Integer可以是基本的,但assertTrue变得不明确-如何满足这两个要求?
我有一段简单的代码,测试Spring存储库:Java Integer可以是基本的,但assertTrue变得不明确-如何满足这两个要求?,java,intellij-idea,casting,integer,int,Java,Intellij Idea,Casting,Integer,Int,我有一段简单的代码,测试Spring存储库: //存储库是在代码中声明的,这并不重要 @试验 public void objectTest(){ 整数testId=10; TestedObject testObj=repository.getTestedObject(testId); assertNotNull(testObj); assertEquals(testId,testObj.getId());//testObj.getId()是整数,而不是int } 此代码向我发出了有关testI
//存储库是在代码中声明的,这并不重要
@试验
public void objectTest(){
整数testId=10;
TestedObject testObj=repository.getTestedObject(testId);
assertNotNull(testObj);
assertEquals(testId,testObj.getId());//testObj.getId()是整数,而不是int
}
此代码向我发出了有关testId
的警告,它可以是原始的
当我将testId
更改为primitive时,会出现歧义错误,因为assertEquals(testId,testObj.getId())
可以同时匹配assertEquals(Object,Object)
和assertEquals(int,int)
,这是由于Java的自动装箱功能。
我讨厌不固定的警告,我很想摆脱它们。关于testId
非原始的警告只出现在IntelliJ IDEA中,Eclipse甚至不在乎
我应该:
- 投一个变量
assertEquals((整数)testId,testObj.getId())
- 在IDEA中配置警告严重性
另外,我想在
testObj
的getId()
方法中留下一个整数,以防任何与对象相关的操作无法在原语上完成。答案是:这是一个错误。感谢您在JetBrains上创建错误报告。(链接,从评论中复制)
毕竟,我已经使用并选择了
intValue()
方法。您可以使用整数的原语值,比如assertEquals(testId,testObj.getId().intValue())代码>相反,您可以使用assertTrue(int value==整数值)@BadDeveloper隐藏预期值和实际值。@AndyTurner:实际值始终是硬编码的。这没有任何意义difference@user1001如果出现故障,它会在异常消息中显示。