2016-10-02 4 views
1

私が作ったカードのオブジェクトを並べ替えたい。私は順序でカードを並べ替えるために配列を作ったが、私のArrays.sort(カード)は私のjunitテストに失敗する。私のtestSort()メソッドに問題はありますか?私のsetUp()テストは成功するので、そうではありません。Arrays.sort問題?

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

    } 
} 

答えて

4

カードをカードアレイに配置しないでください。

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

基本的に、あなたのテストアレイいくつかの方法にカードを追加する必要があります。多分このような何かにあなたの@Beforeを変更します。

あなたのテストは、ちょうどのようになります。

@Test 
    public void testSort() { 

     Arrays.sort(cards); 

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

    } 
+0

オーケー理にかなっています。しかし、一番最後のこと。 setUp()からtestSort()にカードを呼び出すにはどうすればよいですか?カードは変数に解決できないと言います。 – dj5

+0

@ dj5ああ、私はそれを逃した、あなたは機能の外にカードを宣言する必要があります。このようにして、両方の機能に利用できます。 –

+0

ああ...それは私の頭の上に行った。お手伝いありがとう。 – dj5

0

そして、ちょうどレコードの、あなたは道を読み取るためにはるかに簡単にあなたのテストを書き留めることができます。

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

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

assertThat(sortedCards, is(expectedCards)) 
関連する問題