我的意圖是在the API中使用assertArrayEquals(int[], int[])
中描述的JUnit方法來驗證我的類中的一個方法。在單元測試中使用assertArrayEquals
但是Eclipse向我展示了它無法識別這種方法的錯誤消息。這兩個進口到位:
import java.util.Arrays;
import junit.framework.TestCase;
我錯過了什麼嗎?
我的意圖是在the API中使用assertArrayEquals(int[], int[])
中描述的JUnit方法來驗證我的類中的一個方法。在單元測試中使用assertArrayEquals
但是Eclipse向我展示了它無法識別這種方法的錯誤消息。這兩個進口到位:
import java.util.Arrays;
import junit.framework.TestCase;
我錯過了什麼嗎?
這應該使用JUnit 4工作:
import static org.junit.Assert.*;
import org.junit.Test;
public class JUnitTest {
/** Have JUnit run this test() method. */
@Test
public void test() throws Exception {
assertArrayEquals(new int[]{1,2,3},new int[]{1,2,3});
}
}
(答案是基於this wiki article)
這是舊JUnit框架相同的測試(JUnit 3):
import junit.framework.TestCase;
public class JUnitTest extends TestCase {
public void test() {
assertArrayEquals(new int[]{1,2,3},new int[]{1,2,3});
}
}
注意不同之處:no註解和測試類是TestCase的子類(它實現了th e靜態斷言方法)。
它是JUnit3 ,但我收到消息:描述\t資源\t路徑\t位置\t類型 類型DeckTest未定義方法assertArrayEquals(int [],int []) – Eugene 2010-08-11 12:37:18
是否正在擴展TestCase?請發佈示例代碼,以顯示相關課程。 – 2010-08-11 13:42:37
@AndoidNoob - 在JUnit 4中引入了Assert @ assertArrayEquals。因此,您必須切換到JUnit 4(始終推薦),或者驗證數組是否與具有幾個Java語句的數組相等(在確認後循環訪問數組)大小相同) – 2010-08-11 13:44:51
嘗試添加:
import static org.junit.Assert.*;
assertArrayEquals
是一個靜態方法。
如果你正在寫的JUnit 3.x的風格測試延伸TestCase,那麼你就需要使用Assert
預選賽 - TestCase的擴展維護自己的地位,因此這些方法都可以沒有限定。
如果您使用JUnit 4註釋,避免使用TestCase基類,那麼需要Assert
限定符以及導入org.junit.Assert
。在這些情況下,您可以使用靜態導入來避免限定符,但這些被一些人認爲是poor style。
,如果你想使用只是沒有的assertEquals根據您的JUnit版本
assertTrue(Arrays.equals(expected, actual));
什麼版本的JUnit你使用這可能是有用的?你之前使用過JUnit斷言嗎?您確定要進行單元測試,而不是'java.util.Arrays.equals/deepEquals'方法? – polygenelubricants 2010-08-11 12:12:05
坦率地說,我不知道我使用的是哪個版本的JUnit,但我知道我已經下載了Eclipse版本:3.5.1,並且包含了JUnit。我之前沒有使用JUnit斷言,我只是在學習。是的,我想單元測試。 – Eugene 2010-08-11 12:27:16
我發現了 - 它是JUnit3。 – Eugene 2010-08-11 12:33:10