2014-09-22 65 views
3

我試圖從MyClass測試方法calculate曖昧方法:同時測試

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

// MyClass 
public ArrayList<Long> calculate() {} // signature 

不幸的是我得到了以下錯誤:

The method assertEquals(Object, Object) is ambiguous for the type TestClass 

我在做什麼錯?的calculate返回類型是ArrayListlong - 值和我所期望的long號123

當我這樣做,它的工作原理:long類型的

// 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)); 
} 

回答

5

您對assertEquals調用有一個參數另一種是Long。使用下列之一:

assertEquals(Long.valueOf(123L), tester.calculate().get(5)); 

assertEquals(123L, tester.calculate().get(5).longValue()); 

(我建議使用long文字123L而不是強制轉換爲int文字的long。)