2017-04-09 89 views
3

我的教授給我的單元測試有點問題。在編譯時,我收到以下錯誤:
cannot find symbol import org.junit.Assert.assertArrayEquals; cannot find symbol import org.junit.Assert.assertEquals; import org.junit.Assert.assertFalse; import org.junit.Assert.assertTrue;導入org.junit.Assert時出錯

我已經下載了JUnit和我可以編譯一個類似的文件,所以爲什麼我有這個問題? 的代碼是:

import java.util.Comparator; 
import org.junit.Assert.assertArrayEquals; 
import org.junit.Assert.assertEquals; 
import org.junit.Assert.assertFalse; 
import org.junit.Assert.assertTrue; 
import org.junit.Before; 
import org.junit.Test; 

    public class SortingTests { 

     class IntegerComparator implements Comparator<Integer> { 
     @Override 
     public int compare(Integer i1, Integer i2) { 
      return i1.compareTo(i2); 
     } 
     } 

     private Integer i1,i2,i3; 
     private OrderedArray<Integer> orderedArray; 

     @Before 
     public void createOrderedArray(){ 
     i1 = -12; 
     i2 = 0; 
     i3 = 4; 
     orderedArray = new OrderedArray<>(new IntegerComparator()); 
     } 

     @Test 
     public void testIsEmpty_zeroEl(){ 
     assertTrue(orderedArray.isEmpty()); 
     } 

     @Test 
     public void testIsEmpty_oneEl() throws Exception{ 
     orderedArray.add(i1); 
     assertFalse(orderedArray.isEmpty()); 
     } 


     @Test 
     public void testSize_zeroEl() throws Exception{ 
     assertEquals(0,orderedArray.size()); 
     } 

    } 
+1

方法大概的jar不在類路徑中。你能確認嗎?還請告訴你使用哪個罐子? – DNAj

+0

我正在使用JUnit 4.12,該jar應該在類路徑中。我可以在同一個文件夾中編譯類似的測試。 – Leo

+0

好的,我在classpath中犯了一個錯誤。謝謝您的幫助。 – Leo

回答

1

您應該添加關鍵字static將其導入。舉個例子:

import static org.junit.Assert.assertFalse; 
+0

Addind關鍵字給我以下錯誤:包org.junit不存在 – Leo

3

假設你已經在classpath中JUnit dependency,使用import static的斷言方法:

import static org.junit.Assert.assertArrayEquals; 
import static org.junit.Assert.assertEquals; 
import static org.junit.Assert.assertFalse; 
import static org.junit.Assert.assertTrue; 

或者乾脆使用:

import static org.junit.Assert.*; 
+0

好的,我在classpath中犯了一個錯誤。無論如何,感謝您的幫助。 – Leo

1

你在找什麼是一個靜態導入

import org.junit.Assert.assertArrayEquals;從類org.junit.Assert

引用的方法assertArrayEquals導入一個靜態方法,所以它是可調用就像assertEquals(0,orderedArray.size());與靜態導入線來完成。請嘗試以下:

import static org.junit.Assert.assertArrayEquals; 
import static org.junit.Assert.assertEquals; 
import static org.junit.Assert.assertFalse; 
import static org.junit.Assert.assertTrue; 

另外,您可以:

import static org.junit.Assert.*; 

,或者你可以:

import org.junit.Assert; 

和引用類似

Assert.assertEquals(0,orderedArray.size());