2013-03-08 1 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 = new Card(); 

Тогда вам также необходимо построить палубу объект, который вы будете использовать для вызова методов класса Deck для того, чтобы, например, добавлять карты в колоду

Deck deck = new Deck(); 

Используйте колоду объекта для вызовите метод добавления, чтобы добавить карту в колоде

deck.add(card); 

Так что теперь ваш главный метод должен выглядеть следующим образом:

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

Также в вашем классе Deck я бы рекомендовал использовать List<Card> deck = new ArrayList<Card>(); , а не ArrayList<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

Удалите эту инициализацию redundand, потянув ее в @Before или что-то в этом роде.Именование объекта, который тестируется «cut», является хорошим соглашением, imo. – atamanroman

1

Используйте среду тестирования, как JUnit см пример ниже,

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

Я думаю, что я не понимаю, что вы хотите, но я дам свое предложение здесь любым способом.

Где находится класс карты?

Добавьте этот метод в свой класс Deck, скомпилируйте свой код и выполните.

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

Это * водитель *, тоже. Вы должны утверждать результат. – atamanroman

+1

Вы являетесь причиной того, что демотируете нас, чтобы попытаться помочь кому-то, потому что вы ниспровергаете без причины ... Я знаю, что такое тестовый класс, но собственный вопрос, возможно, нет, поэтому пусть он выбирает то, что хочет, и голосует в лучшем ответ... –

0

Если вы находитесь в Blue Jay вы можете просто щелкнуть правой кнопкой мыши на классе и в нижней части всплывающего меню - вверх, там будет возможность для «Создать тестовый класс». Использование этого упростит процесс. Ниже я привел пример того, что создает 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() 
    { 
    } 
} 
Смежные вопросы