2010-08-11 50 views
32

Mục đích của tôi là sử dụng phương thức JUnit được mô tả trong the API để xác minh một phương thức trong lớp học của tôi.Sử dụng assertArrayEquals trong các bài kiểm tra đơn vị

Nhưng Eclipse cho tôi thấy thông báo lỗi rằng nó không thể nhận ra một phương thức như vậy. Hai loại nhập này được đặt tại chỗ:

import java.util.Arrays; 
import junit.framework.TestCase; 

Tôi có bỏ lỡ điều gì đó không?

+0

Phiên bản nào của JUnit bạn đang sử dụng? Bạn đã từng sử dụng các xác nhận của JUnit trước đây chưa? Bạn có chắc chắn muốn thử nghiệm đơn vị và không, ví dụ: 'java.util.Arrays.equals/deepEquals' phương pháp? – polygenelubricants

+0

Thành thật mà nói tôi không biết tôi đang sử dụng phiên bản JUnit nào, nhưng tôi biết tôi đã tải xuống Phiên bản Eclipse: 3.5.1 và JUnit. Tôi chưa từng sử dụng các xác nhận của JUnit trước đây, tôi chỉ đang học. Và vâng, tôi muốn thử nghiệm đơn vị. – Eugene

+0

Tôi phát hiện ra - đó là JUnit3. – Eugene

Trả lời

42

này nên làm việc với 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}); 

    } 
} 

(câu trả lời dựa trên this wiki article)


Và điều này là như nhau cho các khuôn khổ JUnit cũ (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}); 
    } 
} 

Lưu ý sự khác biệt: không có Chú thích và lớp kiểm tra là lớp con của TestCase (thực hiện thứ e phương thức khẳng định tĩnh).

+1

Đây là JUnit3 , nhưng tôi nhận được thông báo: Mô tả \t Tài nguyên \t Đường dẫn \t Vị trí \t Loại Phương thức assertArrayEquals (int [], int []) không xác định cho loại DeckTest – Eugene

+0

bạn có đang mở rộng TestCase không? Vui lòng đăng mã mẫu cho biết lớp được đề cập. –

+1

@AndoidNoob - Assert @ assertArrayEquals đã được giới thiệu với JUnit 4. Vì vậy, bạn phải chuyển sang JUnit 4 (luôn được khuyến nghị) hoặc xác minh tính bình đẳng của các mảng với một số câu lệnh Java (lặp qua mảng sau khi đảm bảo, chúng cùng kích thước) –

5

Cố gắng thêm:

import static org.junit.Assert.*; 

assertArrayEquals là một phương pháp tĩnh.

0

Nếu bạn đang viết bài kiểm tra kiểu JUnit 3.x mở rộng TestCase, thì bạn không cần sử dụng vòng loại Assert - TestCase mở rộng Assert và vì vậy các phương pháp này khả dụng mà không có vòng loại.

Nếu bạn sử dụng chú thích JUnit 4, tránh lớp cơ sở TestCase, thì cần có vòng loại Assert cũng như nhập org.junit.Assert. Bạn có thể sử dụng tính năng nhập tĩnh để tránh trình độ vòng loại trong những trường hợp này, nhưng chúng được coi là số poor style bởi một số trường hợp.

28

Điều này có thể hữu ích nếu bạn muốn sử dụng chỉ assertEquals không phụ thuộc vào phiên bản Junit bạn

assertTrue(Arrays.equals(expected, actual)); 
Các vấn đề liên quan