Hoe schrijf ik een testklas om mijn code te testen?

Ik wil een testklasse om deze klasse te testen, maar ik weet niet hoe ik het moet schrijven en ik heb geprobeerd het online te zien, maar ik kon er nog steeds niet achter komen. Ik heb de code op BlueJ geschreven, ik probeer de set-game te maken .

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");
    }
}

Antwoord 1, autoriteit 100%

Eerst moet je beslissen welke testgevallen je voor je klas moet schrijven,
Je kunt een bibliotheek zoals Junit gebruiken om testcases te maken zodra je de lijst met testcases bij de hand hebt.

Hier is een voorbeeld van een paar Junit-methoden

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

Antwoord 2, Autoriteit 40%

Gebruik een testkader zoals JUNIST, zie het onderstaande monster,

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

Antwoord 3, Autoriteit 20%

U moet de hoofdmethode maken die de functionaliteit van uw klasse zou testen.

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

In uw hoofdmethode moet u bijvoorbeeld een kaartobject construeren (ervan uitgaande dat u de kaartklasse hebt).

Card card = new Card();

Dan moet u ook een dekobject construeren, dat u zou gebruiken om methoden van de dekklasse te bellen om bijvoorbeeld kaarten aan het dek te voegen

Deck deck = new Deck();

Gebruik het dekobject om de Toevoegmethode toe te voegen om de kaart aan het dek

toe te voegen

deck.add(card);

Dus nu moet uw hoofdmethode er zoiets uitzien:

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

Ook in je Deck-klasse raad ik aan om List<Card> deck = new ArrayList<Card>();
in plaats van ArrayList<Card> deck = new ArrayList<Card>();.

Ik hoop dat dit je een startpunt geeft.


Antwoord 4

Ik denk dat ik niet begreep wat je wilt, maar ik zal mijn suggestie hier hoe dan ook geven.

Waar is de kaartles?

Voeg deze methode toe aan uw Deck-klasse, compileer uw code en voer deze uit.

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

Antwoord 5

Als je in Blue Jay bent, kun je gewoon met de rechtermuisknop op de klas klikken en onderaan de pop-up zal er een optie zijn voor “Testklas maken”. Het gebruik hiervan vereenvoudigt het proces. Hieronder heb ik een voorbeeld gegeven van wat Blue Jay maakt.

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()
    {
    }
}

Other episodes