Использование assertArrayEquals в модульных тестах
Я намерен использовать метод assertArrayEquals(int[], int[])
JUnit, описанный в API для проверки одного метода в моем классе.
Но Eclipse показывает мне сообщение об ошибке, что он не может распознать такой метод. Эти два импорта находятся на месте:
import java.util.Arrays;
import junit.framework.TestCase;
Я что-то пропустил?
Ответы
Ответ 1
Это должно работать с 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});
}
}
(ответ основан на этой статье 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});
}
}
Обратите внимание на разницу: никакие аннотации и тестовый класс не являются подклассом TestCase (который реализует статические методы assert).
Ответ 2
Это может быть полезно, если вы хотите использовать только assertEquals, в зависимости от вашей версии Junit
assertTrue(Arrays.equals(expected, actual));
Ответ 3
Попробуйте добавить:
import static org.junit.Assert.*;
assertArrayEquals
является статическим методом.
Ответ 4
Если вы пишете тесты стиля JUnit 3.x, которые расширяют TestCase, вам не нужно использовать квалификатор Assert
- TestCase расширяет Assert и поэтому эти методы доступны без квалификатора.
Если вы используете аннотации JUnit 4, избегая базового класса TestCase, тогда нужен определитель Assert
, а также import org.junit.Assert
. Вы можете использовать статический импорт, чтобы избежать определения в этих случаях, но некоторые считают слабым стилем некоторыми.