在单元测试中使用assertArrayEquals

时间:2010-08-11 11:55:19

标签: java eclipse junit

我的目的是使用the API中描述的assertArrayEquals(int[], int[]) JUnit方法验证我班级中的一种方法。

但Eclipse向我显示了无法识别这种方法的错误消息。这两个进口到位:

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

我错过了什么吗?

4 个答案:

答案 0 :(得分:52)

这适用于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 Annotations和测试类是TestCase的子类(实现静态断言方法)。

答案 1 :(得分:29)

如果您只想使用assertEquals而不依赖于Junit版本

,这可能很有用
assertTrue(Arrays.equals(expected, actual));

答案 2 :(得分:5)

尝试添加:

import static org.junit.Assert.*;

assertArrayEquals是一种静态方法。

答案 3 :(得分:0)

如果您正在编写扩展TestCase的JUnit 3.x样式测试,那么您不需要使用Assert限定符 - TestCase扩展Assert本身,因此这些方法在没有限定符的情况下可用

如果使用JUnit 4注释,避免使用TestCase基类,则需要Assert限定符以及导入org.junit.Assert。在这些情况下,您可以使用静态导入来避免限定符,但有些人会将其视为poor style