如何编写测试类来测试我的代码?

时间:2013-03-08 19:44:36

标签: java arraylist bluej

我想要一个测试类来测试这个类,但我不知道如何编写它,我试图在网上看到但我仍然无法解决它。我在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");
    }
}

5 个答案:

答案 0 :(得分: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));
  }
} 

答案 1 :(得分: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));
    }
}

答案 2 :(得分:0)

您需要创建测试类功能的main方法。

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

在main方法中,您需要构建一个Card对象(假设您有Card类)。

Card card = new Card();

然后你还需要构建一个Deck对象,你可以用它来调用Deck类的方法,以便例如将卡添加到Deck

Deck deck = new Deck();

使用deck对象调用add方法将卡添加到Deck

deck.add(card);

所以现在你的主要方法应该是这样的:

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

同样在你的甲板课程中,我建议使用List<Card> deck = new ArrayList<Card>(); 而不是ArrayList<Card> deck = new ArrayList<Card>();

希望这能为你提供一个起点。

答案 3 :(得分:0)

我想我不明白你想要什么,但我会以任何方式提出我的建议。

Card类在哪里?

在Deck类中添加此方法,编译代码并执行。

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

答案 4 :(得分: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()
    {
    }
}