2016-10-02 1 views
1

Ich möchte Kartenobjekte sortieren, die ich gemacht habe. Ich habe ein Array erstellt, um die Karten in der richtigen Reihenfolge zu sortieren, aber mein Array.sort (Karten) schlägt meinen Junit-Test fehl. Gibt es ein Problem mit meiner Methode testSort()? Mein setUp() Test besteht, also ist es das nicht.Array.sort Problem?

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

    } 
} 

Antwort

4

Sie legen die Karten niemals in das Karten-Array. vielleicht Ihre @Before zu so etwas wie dies ändern:

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} 
    } 

Grundsätzlich Sie die Karten auf Ihre Testanordnung, wie einige hinzufügen müssen.

Ihr Test würde dann aussehen wie:

@Test 
    public void testSort() { 

     Arrays.sort(cards); 

     assertEquals(twoOfClubs, cards[0]); 
     assertEquals(fourOfDiamonds, cards[1]); 
     assertEquals(sixOfHearts, cards[2]); 
     assertEquals(tenOfSpades, cards[3]) 

    } 
+0

Okay, das macht Sinn. Aber eine letzte Sache. Wie kann ich Karten von setUp() zu testSort() aufrufen? Es besagt, dass Karten nicht in eine Variable aufgelöst werden können. – dj5

+0

@ dj5 ah, das habe ich verpasst. Möglicherweise müssen Sie Karten außerhalb der Funktionen deklarieren. Auf diese Weise steht es beiden Funktionen zur Verfügung. –

+0

Oh ... Das ging über meinen Kopf haha. Danke für die Hilfe. – dj5

0

Und nur für das Protokoll, können Sie Ihren Test in einer viel einfacher aufzuschreiben Art und Weise zu lesen:

Club[] expectedCards = { new Club ... }; 

Club[] sortedCards = ... running your "code to sort" 

assertThat(sortedCards, is(expectedCards)) 
Verwandte Themen