#arrays #sorting #junit
#массивы #сортировка #junit
Вопрос:
Я хочу отсортировать объекты card, которые я создал. Я создал массив, чтобы помочь отсортировать карточки по порядку, однако мой Arrays.sort (cards) не прошел мой тест junit. Есть ли проблема с моим методом testSort()? Мой тест setUp () проходит, так что это не так.
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import static org.junit.Assert.*;
public class CardTest {
private Card twoOfClubs;
private Card fourOfDiamonds;
private Card sixOfHearts;
private Card tenOfSpades;
@Before
public void setUp() throws Exception {
twoOfClubs = new Card(Rank.TWO, Suit.CLUBS);
fourOfDiamonds = new Card(Rank.FOUR, Suit.DIAMONDS);
sixOfHearts = new Card(Rank.SIX, Suit.HEARTS);
tenOfSpades = new Card(Rank.TEN, Suit.SPADES);
}
@Test
public void testSort() {
Card[] cards = new Card[4];
Arrays.sort(cards);
assertEquals(twoOfClubs, cards[0]);
assertEquals(fourOfDiamonds, cards[1]);
assertEquals(sixOfHearts, cards[2]);
assertEquals(tenOfSpades, cards[3])
}
}
Ответ №1:
Вы никогда не помещаете карты в массив карт. может быть, измените свой @Before
на что-то вроде этого:
private Card[] cards;
@Before
public void setUp() throws Exception {
cards = new Card[4];
twoOfClubs = new Card(Rank.TWO, Suit.CLUBS);
fourOfDiamonds = new Card(Rank.FOUR, Suit.DIAMONDS);
sixOfHearts = new Card(Rank.SIX, Suit.HEARTS);
tenOfSpades = new Card(Rank.TEN, Suit.SPADES);
cards = {tenOfSpades,fourOfDiamonds,twoOfClubs,sixOfHearts}
}
По сути, вам нужно каким-то образом добавить карточки в свой тестовый массив.
Тогда ваш тест будет выглядеть так:
@Test
public void testSort() {
Arrays.sort(cards);
assertEquals(twoOfClubs, cards[0]);
assertEquals(fourOfDiamonds, cards[1]);
assertEquals(sixOfHearts, cards[2]);
assertEquals(tenOfSpades, cards[3])
}
Комментарии:
1. Хорошо, это имеет смысл. И последнее. Как я могу вызвать cards из setUp() в testSort()? В нем говорится, что карты не могут быть преобразованы в переменную.
2. @dj5 ах, я это пропустил, возможно, вам придется объявлять карты вне функций. Таким образом, он доступен для обеих функций.
3. Ох… Это прошло через мою голову, ха-ха. Спасибо за помощь.
4. Спасибо, рад помочь
Ответ №2:
И просто для записи, вы можете записать свой тест в гораздо более удобном для чтения виде:
Club[] expectedCards = { new Club ... };
Club[] sortedCards = ... running your "code to sort"
assertThat(sortedCards, is(expectedCards))