2014-09-01 39 views
0

我书面方式JUnit测试,我有这样一行多次使用的Java INT = 1转变为长= 2

Assert.assertEquals("Size of list is incorrect", 1, list.size()); 

由于一些地方,这条线工作正常,但一些在Java转换失败。

方法签名

无效org.junit.Assert.assertEquals(字符串消息,期待已久,长 实际)

在某些时候,它失败,因为list.size()是一个int=1但一旦过去到assertEquals(String message, long expected, long actual)已成为long=2并断言失败。

Integer.valueOf()Long.valueOf这样的显式转换可以解决这个问题,但为什么JVM正在更改第60行的值(而在第30行,它的工作原理如此)?

+5

没有办法'(int)1'正在变成'(long)2L'如果它看起来是'2'而不是'long',那么'2'就是'int'。 – 2014-09-01 12:52:31

+2

“第60行的值(在第30行时,它作为有人参与)”你在谈论哪条线。你在这两条线之间做了什么,这可能是问题的原因。我建议你使用调试器来更好地理解你的程序在做什么。 – 2014-09-01 12:54:28

回答

1

在用teamate进行了一些调试之后,看起来eclipse在某些时候失败了,无法重新编译该类,并且代码使用了之前复制/粘贴的其他变量。

+1

这就是单元测试的目的:检查eclipse编译是否正确。 ;) – 2014-09-01 12:57:16