Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java int=1转换为long=2_Java_Junit - Fatal编程技术网

Java int=1转换为long=2

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(字符串消息,长预期,长实际)就变

我正在编写JUnit测试,像这样的一行已经用了好几次了

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是否正确编译。”