Использование assertArrayEquals в модульных тестах

Я собираюсь использовать assertArrayEquals (int [], int []) метод JUnit, описанный в API для проверки одного метода в моем классе.

Но Eclipse показывает мне сообщение об ошибке, что он не может распознать такой метод. Эти два импорта на месте:

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

Я что-то пропустил?

37
задан ROMANIA_engineer 20 May 2015 в 20:05
поделиться

3 ответа

Это должно работать с 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});

    }
}

(ответ основан на этой статье в вики )


То же самое и для старой структуры 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});
  }
}

Обратите внимание на разницу: никаких аннотаций и тестовый класс является подклассом TestCase (который реализует статические методы утверждения).

58
ответ дан 27 November 2019 в 04:20
поделиться

Если вы пишете тесты стиля JUnit 3.x, расширяющие TestCase , тогда вам не нужно использовать квалификатор Assert - TestCase extends Утверждает себя, и поэтому эти методы доступны без квалификатора.

Если вы используете аннотации JUnit 4, избегая базового класса TestCase, тогда необходим квалификатор Assert , а также импорт org.junit.Assert . Вы можете использовать статический импорт, чтобы избежать использования квалификатора в этих случаях, но некоторые считают это плохим стилем .

0
ответ дан 27 November 2019 в 04:20
поделиться

Попробуйте добавить:

import static org.junit.Assert.*;

assertArrayEquals - статический метод.

5
ответ дан 27 November 2019 в 04:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: