Проблема с массивами.сортировка?

#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))