在单元测试中使用assertArrayEquals

Eug*_*ene 37 java eclipse junit

我的目的是使用API中assertArrayEquals(int[], int[])描述的JUnit方法来验证我的类中的一个方法.

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

import java.util.Arrays;
import junit.framework.TestCase;
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

And*_*s_D 58

这应该适用于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});

    }
}
Run Code Online (Sandbox Code Playgroud)

(答案基于这篇wiki文章)


旧的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});
  }
}
Run Code Online (Sandbox Code Playgroud)

注意区别:no Annotations和测试类是TestCase的子类(实现静态断言方法).

  • @Andreas_D你的回答暗示`assertArrayEquals`可以和JUnit 3一起使用.它与你自己的评论和siik的测试(以及我的测试)相矛盾.`assertArrayEquals`与JUnit 3完全不兼容. (3认同)

car*_*les 30

如果您只想使用assertEquals而不依赖于Junit版本,这可能很有用

assertTrue(Arrays.equals(expected, actual));
Run Code Online (Sandbox Code Playgroud)


小智 5

尝试添加:

import static org.junit.Assert.*;
Run Code Online (Sandbox Code Playgroud)

assertArrayEquals 是一种静态方法.