使用Long的Java JUnit assertEquals

时间:2009-06-18 14:35:32

标签: java junit long-integer

    assertEquals( new Long(42681241600) , new Long(42681241600) );

我试着检查两个长号,但是当我尝试编译这个时,我得到了

    integer number too large: 42681241600   

错误。文档显示有一个Long,Long assertEquals方法,但它没有被调用。

4 个答案:

答案 0 :(得分:20)

你想:

assertEquals(42681241600L, 42681241600L);

您的代码正在调用assertEquals(Object,Object)。您还需要在数字的末尾附加“L”字符,以告诉Java编译器该编号应该编译为long而不是int。

答案 1 :(得分:7)

42681241600被解释为int字面值,它太大了。附加一个“L”使其成为long字面值。

如果您想获得所有技术支持,可以查看§3.10.1 of the JLS

  

如果整数文字的后缀为ASCII字母longL(ell),则其类型为l;否则它是int (§4.2.1)类型。后缀L是首选,因为字母l(ell)通常很难与数字1(一)区分开来。

答案 2 :(得分:2)

在您的号码末尾添加“L”,例如:

new Long(42681241600L)
在Java中,每个文字数都被视为一个整数。

答案 3 :(得分:2)

您通常也应该考虑使用Long.valueOf,因为这可能会允许一些优化:

Long val = Long.valueOf(1234L);

来自J2SDK

  

public static Long valueOf(long l)

     

返回表示的Long实例   指定的长值。如果是新的   这不需要长实例   方法一般应该用于   对构造函数的偏好   很长(很长),因为这种方法很可能   产生明显更好的空间   和缓存的时间表现   经常要求的价值观。