Java int=1转换为long=2
我正在编写JUnit测试,像这样的一行已经用了好几次了Java int=1转换为long=2,java,junit,Java,Junit,我正在编写JUnit测试,像这样的一行已经用了好几次了 Assert.assertEquals("Size of list is incorrect", 1, list.size()); 在某些地方,这一行可以正常工作,但Java转换失败了 方法签名是 void org.junit.Assert.assertEquals(字符串消息,长消息,长消息 实际的) 在某些情况下,它会失败,因为list.size()是一个int=1,但一旦超过assertEquals(字符串消息,长预期,长实际)就变
Assert.assertEquals("Size of list is incorrect", 1, list.size());
在某些地方,这一行可以正常工作,但Java转换失败了
方法签名是
void org.junit.Assert.assertEquals(字符串消息,长消息,长消息
实际的)
在某些情况下,它会失败,因为list.size()
是一个int=1
,但一旦超过assertEquals(字符串消息,长预期,长实际)
就变成了一个long=2
,断言失败
使用显式强制转换,如
Integer.valueOf()
或Long.valueOf
可以解决这个问题,但JVM为什么要在第60行更改值(而在第30行它是作为参与者工作的)?在与teamate进行一些调试之后,eclipse似乎在某个时候重新编译类失败了,代码使用了以前复制/粘贴的另一个变量。如果它看起来是2
作为long
它是2
作为int
第60行的值,那么(int)1
就不可能变成(long)2L
(在第30行时,它工作得很好)“你在说哪几行。你在这几行之间做了什么,这可能是问题的原因。我建议你使用调试器来更好地了解你的程序在做什么。这就是单元测试的目的:检查eclipse是否正确编译。”