测试时模糊的方法

use*_*330 3 java testing junit

我正在尝试calculateMyClass以下方法测试该方法:

// TestClass {
@Test
public void testCalculate() {
    MyClass tester = new MyClass();
    assertEquals((long)123, tester.calculate().get(5));
}

// MyClass
public ArrayList<Long> calculate() {} // signature
Run Code Online (Sandbox Code Playgroud)

不幸的是我收到以下错误:

The method assertEquals(Object, Object) is ambiguous for the type TestClass
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?返回类型calculateArrayList带有值long,我期望long数字123.

当我执行以下操作时,它可以工作:

// TestClass {
@Test
public void testCalculate() {
    MyClass tester = new MyClass();
    ArrayList<Long> arr = new ArrayList<Long>();
    arr.add((long) 123);
    assertEquals(arr.get(0), tester.calculate().get(5));
}
Run Code Online (Sandbox Code Playgroud)

Ted*_*opp 6

你的调用assertEquals有一个类型的参数long和另一个类型的参数Long.使用以下之一:

assertEquals(Long.valueOf(123L), tester.calculate().get(5));
Run Code Online (Sandbox Code Playgroud)

要么

assertEquals(123L, tester.calculate().get(5).longValue());
Run Code Online (Sandbox Code Playgroud)

(我建议使用long文本123L,而不是强制转换为long一个的int文字.)