Массив параметризации модульного теста Java

Привет, я делаю модульный тест для алгоритма QuickSort (т.е. сортирую случайные числа в случайном порядке по возрастанию). Однако я не мог объявить массив чисел в Collection. Не могли бы вы помочь? Спасибо. Также в этой строке есть синтаксическая ошибка

this.arrayIn[]= arrayIn;

Правильно ли я это тестирую

assertEquals(arrayOut, QuickSort.sort(arrayIn));

package week8;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

@RunWith(Parameterized.class)
public class QuickSortTest {

private int[] arrayIn[];
private int length;
private int[] arrayOut[];

public QuickSortTest(int[] arrayIn, int length, int[] arrayOut) {
    this.arrayIn[]= arrayIn;
    this.length=length;
    this.arrayOut[]=arrayOut;   
}

@Parameters
public static Collection<Object[]> parameters(){
    return Arrays.asList(new Object[][]{
        {{1,4,6,3,5,4},6,{1,3,4,4,5,6}}
    });
}
@Test
public void test_quicksort() {
    assertEquals(arrayOut, QuickSort.sort(arrayIn));
} 
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 148
2

Ответы 2

Объявление частного атрибута arrayIn:

private int[] arrayIn[];

эквивалентно:

private int[][] arrayIn;

Итак, присваивая ему значение, вы должны сделать:

this.arrayIn = ...; // without the brackets []

Я не понимаю, почему вы используете параметризованный тест. Параметризованный тест полезен для тестирования множества входов. И у вас только один набор входных данных: массив и длина. Так, например, достаточно одного метода тестирования. И убедитесь, что вы используете правильный метод assert: assertEquals(Object, Object) здесь не адаптирован, вам следует использовать assertArrayEquals(int[], int[]):

public class QuickSortTest {

    @Test
    public void test_quicksort() {
        ...
        assertArrayEquals(expectedArr, actualArr);
    }
}

Спасибо за подсказку по assertArrayEquals - когда я использовал assertEquals, появлялись тарабарщины. Спасибо и за объявление! Теперь это работает! Да, я собирался добавить больше параметров, но поскольку я все еще получаю ошибку для 1-го случая, я просто остановился, чтобы проверить. Я изменил свой код, как показано ниже.

@Parameters
public static Collection<Object[]> parameters(){
    return Arrays.asList(new Object[][]{
        {new int[] {1,4,1,6,3,5}, 6, new int[] {1,1,3,4,5,6}},
        {new int[] {1,4,1,6,3,5}, 6, new int[] {1,3,1,4,5,6}},
        {new int[] {70000,4,1,6,3,5}, 7, new int[] {1,3,4,5,6,70000}},
    });
}

@Test
public void test_quicksort() {
   new QuickSort().sort(arrayIn);
   assertArrayEquals(arrayOut, arrayIn);

} 

Другие вопросы по теме