JUnit三分钟教程 ---- 实际应用
JUnit三分钟教程 ---- 实际应用
摘自http://lavasoft.blog.51cto.com/62575/65775
接上文“JUnit三分钟教程 ---- 快速起步”,续写一篇,以便能真正将JUnit用到项目的测试中。
进行测试确不清理垃圾数据就像随地大小便一样让人无法忍受!
测试是应该进行,如果测试过程中给数据库中写入了垃圾数据怎么办,不用担心,JUnit的设计者早已考虑到了这个问题,下面看如何控制“测试垃圾”的回收。
结合Eclipse,这个实现非常的简单,80%的代码是Eclipse生成的,呵呵。
一、测试目标
private int a,b;
public Calc() {
}
public int add() {
return a + b;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
public Calc() {
}
public int add() {
return a + b;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
二、写测试用例
测试用例中的setup()方法会在测试逻辑最先调用。就相当于做初始化工作。
测试用例中的tearDown() 方法在测试逻辑之后调用。充当一个清理战场的角色,以清楚测试过程中对现场的状态的破坏。
public class CalcTest1 extends TestCase {
Calc c=new Calc();
protected void setUp() throws Exception {
c.setA(2);
c.setB(1);
}
protected void tearDown() throws Exception {
c=null;
}
public void testAdd() {
int result=c.add();
assertEquals(3,result,0);
// fail("尚未实现"); // TODO
}
}
Calc c=new Calc();
protected void setUp() throws Exception {
c.setA(2);
c.setB(1);
}
protected void tearDown() throws Exception {
c=null;
}
public void testAdd() {
int result=c.add();
assertEquals(3,result,0);
// fail("尚未实现"); // TODO
}
}
public class CalcTest2 extends TestCase {
Calc c=new Calc();
protected void setUp() throws Exception {
c.setA(2);
c.setB(1);
}
protected void tearDown() throws Exception {
c=null;
}
public void testAdd() {
int result=c.add();
assertEquals(3,result,0);
// fail("尚未实现"); // TODO
}
}
Calc c=new Calc();
protected void setUp() throws Exception {
c.setA(2);
c.setB(1);
}
protected void tearDown() throws Exception {
c=null;
}
public void testAdd() {
int result=c.add();
assertEquals(3,result,0);
// fail("尚未实现"); // TODO
}
}
本例中没有测试垃圾,因此tearDown() 实际上可以不用写。
三、生成测试单元
import junit.framework.TestSuite;
public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite("Test for default package");
//$JUnit-BEGIN$
suite.addTestSuite(CalcTest1.class);
suite.addTestSuite(CalcTest2.class);
//$JUnit-END$
return suite;
}
}
public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite("Test for default package");
//$JUnit-BEGIN$
suite.addTestSuite(CalcTest1.class);
suite.addTestSuite(CalcTest2.class);
//$JUnit-END$
return suite;
}
}
四、在Eclipse中执行单元测试

~~~周末愉快!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)