- 实验内容与体会:
在本次试验中,我们进行了单元测试的学习,我用的是eclipse+Windows
的形式,通过一些基本的单元测试完成了本次的实验。
在实验的一开始:要想对某个程序进行单元测试,我们先是在eclipse中建立了一个新的项目,项目的名字是TDDDmeo。并在这个新的项目里右键单击创建一个source floder
:
并将floder的名字命名为test:
在创建好的test处右键单击,进行junit test case
:
它的名字命名如下:
然后一路ok。之后,在src的文件夹里创建一个新的类,类的名字叫做MyUtil,它也就是我们要测试的类。
MyUtil类的代码如下所示:
public class MyUtil{
public static String percentage2fivegrade(int grade){
//如果成绩小于0,转成“错误”
if ((grade < 0))
return "错误";
else if (grade < 60)
return "不及格";
else if (grade < 70)
return "及格";
else if (grade < 80)
return "中等";
else if (grade < 90)
return "良好";
else if (grade <= 100)
return "优秀";
else
return "错误";
}
}
同样的道理,在生成的test包里创建一个新的类,它的名字叫做MyUtilTest,我们就是要用这个类对MyUtil进行测试。
代码如下:
import org.junit.Test;
import junit.framework.TestCase;
public class MyUtilTest extends TestCase {
@Test
public void testNormal() {
assertEquals("不及格", MyUtil.percentage2fivegrade(55));
assertEquals("及格", MyUtil.percentage2fivegrade(65));
assertEquals("中等", MyUtil.percentage2fivegrade(75));
assertEquals("良好", MyUtil.percentage2fivegrade(85));
assertEquals("优秀", MyUtil.percentage2fivegrade(95));
}
}
接下来,我们要对MyUtil类进行测试,相应执行方法如下:
如果测试失败,在程序的左上方就会出现一个红条,证明程序出现了问题。后来发现,是不及格分数定义那里出现了问题:
将上面红框哪里的分数改为60,再运行一遍那个程序,就会出现绿条,证明程序测试成功了:
- 本章程序练习:
本章的练习题是编写一个复数类。在这里我编写了一个实现复数类运算的简单程序,并按照实验要求编写了测试代码:
伪代码:
Complex类要输出实部,输出虚部,并按照a+bi的形式输出复数。
Complex类中有两个变量,实部RealPart和虚部ImaginaryPart。
实现复数类的产品代码:
public class complex {
//实部realpart,虚部imaginPart
private double realPart;
private double imaginPart;
//复数类Complex()构造函数,将实部虚部都置为0
public complex(){
this.realPart = 0;
this.imaginPart = 0;
}
//Complex(double r,double i)创建复数对象的同时完成复数的实部,虚部的初始化
public complex(double r,double i){
this.realPart = r;
this.imaginPart = i;
}
//getRealPart()获取实部
public double getRealPart(){
return realPart;
}
//getImaginaryPart()获取虚部
public double getImaginaryPart(){
return imaginPart;
}
//setRealPart(double d)设置实部
public void setRealPart(double d){
this.realPart = d;
}
//setImaginaryPart(double d)设置虚部
public void setImaginaryPart(double d){
this.imaginPart = d;
}
//add(Complex c)复数相加
public void add(complex c1,complex c2){
complex c = new complex(c1.realPart+c2.realPart,c1.imaginPart+c2.imaginPart);
print(c);
}
//minus(Complex c)复数相减
public void minus(complex c1,complex c2){
complex c = new complex(c1.realPart-c2.realPart,c1.imaginPart-c2.imaginPart);
print(c);
}
//ComplexMulti(Complex c)复数相乘
public void ComplexMulti(complex c1,complex c2){
complex c = new complex(c1.realPart*c2.realPart-c1.imaginPart*c2.imaginPart,c1.realPart*c2.imaginPart+c1.imaginPart*c2.realPart);
print(c);
}
//toString()把当前复数对象的实部,虚部组合成a+bi的字符串形式
public void print(complex c){
double a = c.realPart;
double b = c.imaginPart;
System.out.println(a+"+"+b+"i");
}
}
测试这个类的代码是:
import org.junit.Test;
import junit.framework.TestCase;
public class complextest extends complex {
@Test
public void printTest(){
complex c1 = new complex(3.5,9);
complex c2 = new complex(9,23);
complex c = new complex();
c.ComplexMulti(c2, c1);
c.add(c1, c2);
c.minus(c1, c2);
}
}
代码编好后,在eclipse上运用TDD模式测试一下代码,出现了绿条:
证明程序测试成功了。代码是比较完善的。
- 实验感想总结:
在本次试验中,我们学习了Java代码的单元测试,知道了怎样去编写出更完整的代码,在不断地单元测试改进中,代码的稳定性越来越高,这也是成为优秀的程序员的必经之路。