2014-09-01 52 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