onstructor Sort (String [] [], 11, 12); "не определено в junit - PullRequest
1 голос
/ 25 мая 2011

Я пытаюсь написать тест для следующего метода:

 public class Sort {

...
...
...

    public static String[][] findRanks(String[][] array, int indexOfPoints, int indexOfRank) {

        for (int i = 0; i < array.length - 1; i++) { 
            int compare = 1;
            if (i < array.length - 2)
                compare = Double.valueOf(array[i][indexOfPoints]).compareTo(Double.valueOf(array[i + 1][indexOfPoints]));

            if (i == array.length - 1 || compare != 0) { 
                array[i][indexOfRank] = Integer.toString(i + 1);
            }
            else {
                array[i][indexOfRank] = Integer.toString(i + 1) + " - " + Integer.toString(i + 2);
                array[i+1][indexOfRank] = Integer.toString(i + 1) + " - " + Integer.toString(i + 2);
                i++;
            }
        }
        return array;   
    }

}

Я пробовал следующий тест:

import static org.junit.Assert.*;
import junit.framework.TestCase;
import org.junit.Test;

public class SortTest extends TestCase {

    @Test
    public void testFindRanks() {
        String[][] array = { {"Siim Susi","12.61","5.00","9.22","1.50","60.39","16.43","21.60","2.60","35.81","5.25.72","6253.0","1"}, 
                {"Beata Kana","13.04","4.53","7.79","1.55","64.72","18.74","24.20","2.40","28.20","6.50.76","5290.0","2"}};

        Sort test1 = new Sort(array, 11, 12); //This is where the problem is

        String[][] expected = { {"Siim Susi","12.61","5.00","9.22","1.50","60.39","16.43","21.60","2.60","35.81","5.25.72","6253.0","1"}, 
                                {"Beata Kana","13.04","4.53","7.79","1.55","64.72","18.74","24.20","2.40","28.20","6.50.76","5290.0","2"}};

        assertTrue(expected.equals(test1));
        fail("Not yet implemented");
    }

}

Но тест продолжает говорить мне: "Сортировка конструктора (String [] [], 11, 12);" не определено Почему он думает, что это должен быть конструктор и как мне это исправить?

Спасибо.

Ответы [ 5 ]

3 голосов
/ 25 мая 2011

Вы должны написать

    String[][] results = Sort.findRanks(array, 11, 12);

, и чтобы сделать ваши юнит-тесты более понятными, более идиоматичными и более простыми в обслуживании, вы также можете немного изменить его:

public class SortTest extends TestCase {

    @Test
    public void testFindRanks() {
        String[][] array = {...};
        String[][] expected = {...};

        String[][] result = Sort.findRanks(array, 11, 12);

        assertArrayEquals(expected, result);
    }
}

То естьотдельная настройка теста, вызов проверяемого метода и код проверки.Также удалите вызов fail с конца, так как ваш тест всегда будет неудачным: -)

1 голос
/ 25 мая 2011

Сообщение в точности верно: ваш класс Sort не определяет конструктор, который принимает String[][], int, int в качестве параметров, которые вы вызываете в строке, в которой возникла проблема.

Вам необходимо:

String[][] actual = Sort.findRanks(array, 11, 12);
1 голос
/ 25 мая 2011

Это вызов конструктора:

new Sort(array, 11, 12)

И компилятор жалуется, если такой конструктор недоступен

Прочитайте о конструкторах в руководстве по Java

1 голос
/ 25 мая 2011

Похоже, вам нужно сделать

 String[][] actual = Sort.findRanks(array, 11, 12);

, а затем

assertArrayEquals(expected, actual);
0 голосов
/ 25 мая 2011

Ну, похоже, у вас не определен конструктор Sort (по крайней мере, в коде, который вы опубликовали).И компилятор / IDE сообщает вам, что у вас не определен конструктор Sort.

Возможно, вы хотите вызвать эту строку:

String[][] value = Sort.findRanks(array, 11, 12);
//Sort test1 = new Sort(array, 11, 12); <-- dont call this...call the above...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...