软件单元测试
一、实验方法:
1、项目任务驱动教学法;
2、“讲、学、练”相结合。
二、实验仪器与设备:
1、计算机(要求:CPU 1000MHz以上,内存512M以上,磁盘空间20G以上。);
2、Eclipse;
3、一个简单的Student类;
三、实验目的:
1、掌握单元测试理论;
2、掌握单元测试的重要方法;
3、掌握单元测试工具Junit的使用;
四、实验重点:
1、单元测试工具Junit的使用;
2、单元测试的方法;
五、实验难点:
1、测试过程的把握;
2、测试结果的分析;
六、实验项目:使用Junit工具测试一个Java程序Student类。
1、实训要求:
1、编写Java程序Student类。
2、根据白盒测试技术的方法使用Junit工具对该程序进行单元测试。
2、实训步骤:
1、编写被测试程序Student类:
首先创建一个java工程,在工程中创建一个被单元测试的Student数据类,代码如下:
class Student
{
private String name;
private String sex;
private int high;
private int age;
private String school;
public Student(String name, String sex ,int high, int age, String school)
{
this.name = name;
this.sex = sex;
this.high = high;
this.age = age;
this.school = school;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
public int getHigh()
{
return high;
}
public void setHigh(int high)
{
this.high = high;
}
public int getAge()
{
return age;
}
public boolean setAge(int age)
{
if (age >25)
{
return false;
}
else
{
this.age = age;
return true;
}
}
public String getSchool()
{
return school;
}
public void setSchool(String school)
{
this.school = school;
}
}
2、在eclipse下单元测试这个类:
首先导入Junit包:选中java工程,点击鼠标右键—>选择properties---->在窗口中选Java Build Path---->在右侧点击Add Library---->在弹出的窗口列表中选中Junit---->下一步----->Junit 4(我用的是Junit 4)---->finish
这样Junit 4包就导完了,接下来就是创建测试类:
将测试类和被测试类放在不同的包中(也可以放在同一个包中,此处只是为了区别),代码如下:
测试类1:
public class StudentTest01 extends TestCase
{
Student testStudent;
//此方法在执行每一个测试方法之前(测试用例)之前调用
@Override
protected void setUp() throws Exception
{
// TODO Auto-generated method stub
super.setUp();
testStudent = new Student("djm", "boy", 178, 24, "华东政法");
System.out.println("setUp()");
}
//此方法在执行每一个测试方法之后调用
@Override
protected void tearDown() throws Exception
{
// TODO Auto-generated method stub
super.tearDown();
System.out.println("tearDown()");
}
//测试用例,测试Person对象的getSex()方法
public void testGetSex()
{
assertEquals("boy", testStudent.getSex());
System.out.println("testGetSex()");
}
//测试Person对象的getAge()方法
public void testGetAge()
{
assertEquals(24, testStudent.getAge());
System.out.println("testGetAge()");
}
}
测试类2:
public class StudentTest extends TestCase
{
private Student testStudent;
@Override
protected void setUp() throws Exception
{
// TODO Auto-generated method stub
super.setUp();
testStudent = new Student("steven_hu", "boy", 170 , 23, "上海理工");
}
@Override
protected void tearDown() throws Exception
{
// TODO Auto-generated method stub
super.tearDown();
}
public void testSetage()
{
assertTrue(testStudent.setAge(21));
}
public void testGetSchool()
{
//预期值和实际值不一样,测试时出现失败(Failure)
assertEquals("南昌大学", testStudent.getSchool());
}
public void testGetName()
{
assertEquals("hdy", testStudent.getName());
}
}
当然,如果同时需要一起测试以上这两个测试类,可以通过AllTest类实现,它相当于是一个套件,可以把所有测试类添进来一起运行测试;
代码如下:
import junit.framework.Test;
import junit.framework.TestSuite;
public class AllTest
{
//static PersonTest p = new PersonTest();
//static PersonTest p1 = new PersonTest();
public static Test suite()
{
TestSuite suite = new TestSuite("Test for com.phicomme.test");
suite.addTestSuite(StudentTest.class);
suite.addTestSuite(StudentTest01.class);
return suite;
}
}
最后,分别测试以上三个类(选中需要测试的类---->鼠标右键---->Run As---->Junit Test):
StudentTest类的测试结果图:
StudentTest01类的测试结果图:
AllTest类的测试结果图: