Comment écrire une classe de test pour tester mon code?


Je veux une classe de test pour tester cette classe mais je ne sais pas comment l'écrire et j'ai essayé de voir en ligne mais je ne pourrais pas le comprendre.J'ai écrit le code sur BlueJ, j'essaie de créer le jeu set.

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");
    }
}
Author: royhowie, 2013-03-08

5 answers

Vous devez d'abord décider des cas de test que vous devez écrire pour votre classe , Vous pouvez utiliser une bibliothèque comme Junit pour créer des cas de test une fois que vous avez la liste des cas de test à portée de main.

Voici un exemple de quelques méthodes 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));
  }
} 
 4
Author: Avinash Singh, 2013-03-08 20:17:25

Utilisez un framework de test comme Junit, voir l'exemple ci-dessous,

    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));
    }
}
 1
Author: Orn Kristjansson, 2013-03-08 19:54:01

Je pense que je n'ai pas compris ce que vous voulez, mais je vais donner ma suggestion ici n'importe comment.

Où est la classe Card?

Ajoutez cette méthode dans votre classe Deck, compilez votre code et exécutez.

public static void main(String[] args) {
    Deck deck = new Deck();
    // Call your methods here and do what do you want...
}
 0
Author: Cleiton Luiz Siqueira, 2013-03-08 19:54:03

Vous devez créer la méthode principale qui testerait la fonctionnalité de votre classe.

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

Dans votre méthode principale, vous devez par exemple construire un objet Card (en supposant que vous ayez la classe Card).

Card card = new Card();

Ensuite, vous devez également construire un objet Deck, que vous utiliseriez pour appeler des méthodes de la classe Deck afin par exemple d'ajouter des cartes au Deck

Deck deck = new Deck();

Utilisez l'objet deck pour appeler la méthode add pour ajouter la carte au Deck

deck.add(card);

Alors maintenant votre la méthode principale devrait ressembler à ceci:

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

Aussi dans votre classe de Deck, je recommanderais d'utiliser List<Card> deck = new ArrayList<Card>(); plutôt que ArrayList<Card> deck = new ArrayList<Card>();.

J'espère que cela vous donnera un point de départ.

 0
Author: Kakalokia, 2013-03-08 19:54:33

Si vous êtes dans Blue Jay, vous pouvez simplement faire un clic droit sur la classe et au bas de la fenêtre contextuelle, il y aura une option pour "Créer une classe de test". L'utilisation de cela simplifiera le processus. Ci-dessous, j'ai fourni un exemple de ce Geai Bleu crée.

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()
    {
    }
}
 0
Author: Kireeti Setty, 2016-11-11 03:29:49