有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java Junit测试OOP类

我被要求测试我的程序的一些课程,但我不确定如何做,也无法在网上找到任何教程

以下是我想测试的课程之一:

public class Candidate {

    private String name;
    private int voteCount = 0;

    public Candidate(String name) {
        this.name = name;
    }

    public void setVoteCount(int voteCount) {
        this.voteCount = voteCount;
    }

    public String getName() {
        return name;
    }

    public int getVoteCount() {
        return voteCount;
    }

}

下面是添加自动JUnit测试后的情况:

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


public class CandidateTest {

    public CandidateTest() {
    }

    @BeforeClass
    public static void setUpClass() {
    }

    @AfterClass
    public static void tearDownClass() {
    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }

    /**
     * Test of setVoteCount method, of class Candidate.
     */
    @Test
    public void testSetVoteCount() {
        System.out.println("setVoteCount");
        int voteCount = 0;
        Candidate instance = null;
        instance.setVoteCount(voteCount);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    /**
     * Test of getName method, of class Candidate.
     */
    @Test
    public void testGetName() {
        System.out.println("getName");
        Candidate instance = null;
        String expResult = "";
        String result = instance.getName();
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    /**
     * Test of getVoteCount method, of class Candidate.
     */
    @Test
    public void testGetVoteCount() {
        System.out.println("getVoteCount");
        Candidate instance = null;
        int expResult = 0;
        int result = instance.getVoteCount();
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

}

我不确定如何测试这些功能。下面是我对testSetVoteCount()的测试尝试

    public void testSetVoteCount() {
        System.out.println("setVoteCount");
        int voteCount = 5;
        Candidate instance = new Candidate("Test");
        instance.setVoteCount(voteCount);
        assertEquals(instance.getVoteCount(), 5);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

我试图在实例对象中将voteCount值设置为5,然后使用assertEquals检查是否返回了正确的值,但是当我运行此测试时,它失败了,出现了初始化错误

错误的堆栈跟踪如下所示:

org/hamcrest/SelfDescribing
java.lang.NoClassDefFoundError
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

共 (1) 个答案