2013-03-08 4 views
5

私はこのクラスをテストするテストクラスが必要ですが、私はそれを書く方法を知らないし、オンラインで見てみましたが、まだそれを理解できませんでした。私はBlueJにコードを書いていました。私のコードをテストするテストクラスを書くには?

import java.util.*; 

public class Deck 
{ 
    ArrayList<Card> deck; 
    public Deck() 
    { 
     deck = new ArrayList<Card>(); 
    } 

    public Deck (int capacity) 
    { 
     deck = new ArrayList<Card>(capacity); 
    } 

    public int getNumCards() 
    { 
     return deck.size(); 
    } 

    public boolean isEmpty() 
    { 
     return deck.isEmpty(); 
    } 

    public void add (Card card) 
    { 
     deck.add(0,card); 
    } 

    public Card takeTop() 
    { 
     return deck.remove(0); 
    } 

    public void shuffle() 
    { 
     Collections.shuffle(deck); 
    } 

    public void sort() 
    { 
     Collections.sort(deck); 
    } 

    public String toString() 
    { 
     return (deck.toString()+ "\n"); 
    } 
} 

答えて

0

クラスの機能をテストするメインメソッドを作成する必要があります。

public static void main(String args[]) 
{ 
    //To do 
} 

メインメソッドでは、たとえば、Cardオブジェクトを構築する必要があります(Cardクラスがあると仮定します)。

Card card = new Card(); 

その後、あなたはまた、あなたが、たとえばためにデッキクラスのメソッドを呼び出すために使用した、デッキオブジェクトを作成する必要がデッキにカードを追加

Deck deck = new Deck(); 

にデッキオブジェクトを使用します

:デッキにカードを追加するには、Addメソッドを呼び出すことは

deck.add(card); 

だから今、あなたの主な方法は次のようになります。

public static void main(String args[]) 
{ 
    Card card = new Card(); 
    Deck deck = new Deck(); 
    deck.add(card); 
} 

また、デッキクラスでは、ArrayList<Card> deck = new ArrayList<Card>();ではなくList<Card> deck = new ArrayList<Card>(); を使用することをおすすめします。

これはあなたの出発点です。

+0

テストフレームワークは理由があります。あなたのクラスは*ドライバ*であり、テストは結果をアサートすることを意味します。 – atamanroman

+0

彼は彼のプログラムのためのテストクラスを作成する方法をまだ知られていない場合は、彼に有利だったOPを公開していると感じていませんでした。 OPの記述から、彼は彼のプログラムをテストするためにドライバークラスが必要だと思った。 –

4

最初に、クラスに書き込む必要があるテストケースを決定する必要があります。 テストケースリストを手に入れたら、Junitのようなライブラリを使ってテストケースを作成できます。ここで

は、私はあなたが望むものを理解していなかったと思ういくつかのJUnitの方法の一例

import static org.junit.Assert.assertEquals; 

import org.junit.AfterClass; 
import org.junit.BeforeClass; 
import org.junit.Test; 

public class MyClassTest { 

    MyClass tester; 

    @BeforeClass 
    public static void testSetup() { 
    tester = new MyClass(); 
    } 

    @AfterClass 
    public static void testCleanup() { 
    // Do your cleanup here like close URL connection , releasing resources etc 
    } 

    @Test(expected = IllegalArgumentException.class) 
    public void testExceptionIsThrown() {   
    tester.divide(1000, 0); 
    } 

    @Test 
    public void testMultiply() { 
    assertEquals("Result", 50, tester.multiply(10, 5)); 
    } 
} 
+0

その冗長化の初期化を@Beforeまたはそれに類するものに取り込みます。テストされているオブジェクトを「切り取る」という名前は素晴らしいコンベンションです。 – atamanroman

1

public class ThingTester extends TestCase 
{ 
    public ThingTester (String name) 
    { 
     super (name); 
    } 

    public static void main(String[] args) 
    { 
     TestRunner.runAndWait(new TestSuite(ThingTester.class)); 
    } 

    public void testGetName() throws Exception 
    { 
     String fileSpec = new String("c:xxxyyyzzz.txt"); 
     assertEquals("zzz.txt", getName(fileSpec)); 
    } 
} 
0

、以下のサンプルを参照してください、JUnitのようなテストフレームワークを使用しています私はここに私の提案を与えるでしょう。

カードクラスはどこですか?

このメソッドをデッキクラスに追加し、コードをコンパイルして実行します。

public static void main(String[] args) { 
    Deck deck = new Deck(); 
    // Call your methods here and do what do you want... 
} 
+0

これも*ドライバ*です。あなたは結果を主張する必要があります。 – atamanroman

+1

あなたは何か理由なしでdownvoteするため、誰かを助けてみるために私たちをdemotivateする理由です...私はテストクラスは何か知っていますが、質問のおそらくないので、彼は彼が望むものを選択してより良い回答... –

0

あなたはブルージェイにいる場合は、単に右のクラスに、ポップの下部にクリックすることができます - アップ、「テストクラスの作成」のためのオプションがあるでしょう。これを使用するとプロセスが簡略化されます。私はBlue Jayが作成するものの例を以下に提供しました。

import static org.junit.Assert.*; 
import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 

/** 
* The test class TestOfClass2Test. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 
public class TestOfClass2Test 
{ 
    /** 
    * Default constructor for test class TestOfClass2Test 
    */ 
    public TestOfClass2Test() 
    { 
    } 

    /** 
    * Sets up the test fixture. 
    * 
    * Called before every test case method. 
    */ 
    @Before 
    public void setUp() 
    { 
    } 

    /** 
    * Tears down the test fixture. 
    * 
    * Called after every test case method. 
    */ 
    @After 
    public void tearDown() 
    { 
    } 
} 
関連する問題