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 楼答案
你少了一个罐子。确保类路径中有所有依赖项。有关JUnit,请查看以下链接:
https://github.com/junit-team/junit/wiki/Download-and-Install
希望有帮助