您的位置:首页 > 编程语言 > Java开发

使用JUnit4进行java单元测试

2015-09-06 12:56 513 查看
第一步:创建一个java工程,在工程中创建一个被单元测试的Student数据类,代码如下:

package com.junittest.yu;

public 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;
}

}


部分截图如下:



图 1-1

第二步:在eclipse下单元测试这个类
首先,导入Junit包:选中java工程,点击鼠标右键--->选择属性---->在窗口中选Java构建路径---->选择库--->右侧点击添加库---->在弹出的窗口列表中选中Junit---->下一步----->Junit 4---->完成--->确定

部分截图如下:



图 2-1

这样Junit 4包就导完了,接下来就是创建测试类:选中java工程,点击鼠标右键--->选择新建--->JUnit测试用例--->按图2-2编辑--->完成



图 2-2

将测试类和被测试类放在不同的包中(也可以放在同一个包中,此处只是为了区别),测试类(1)代码如下:

package com.junittest.yu.test;

import com.junittest.yu.Student;

import junit.framework.TestCase;

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-3

按以上方法创建测试类(2)代码如下:

package com.junittest.yu.test;

import junit.framework.TestCase;

import com.junittest.yu.Student;

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());
}
}


完成截图如下:



图 2-3

如果同时需要一起测试以上这两个测试类,可以通过TestSuite类实现,它相当于是一个套件,可以把所有测试类添进来一起运行测试

代码如下:

package com.junittest.yu.test;

//import com.junittest.yu.test.StudentTest;
import com.junittest.yu.test.StudentTest01;

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.junittest.yu.test.");
//suite.addTest(p);
//suite.addTest(p1);
suite.addTestSuite(StudentTest.class);
suite.addTestSuite(StudentTest01.class);
return suite;

}
}


完成截图如下:



图 2-4

第三步:分别测试以上三个类(选中需要测试的类---->鼠标右键---->运行方式---->Junit 测试)
StudentTest01类测试结果截图如下:



图 3-1

StudentTest类测试结果截图如下:



图 3-2

AllTest类测试结果截图如下:



图 3-3

到此java类的单元测试就完成了。

第四步:将Eclipse中java代码上传到GitHub



图 4-1

在java项目上右击--->Team--->共享项目--->Git--->按图4-2操作--->完成



图 4-2

将代码上传到GitHub:

在java项目上右击--->Team--->commit--->选中所有文件--->commit --->见图4-3--->URI就是GitHub自己仓库的地址--->见图4-4--->见图4-5--->图4-6



图 4-3



图 4-4



图 4-5



图 4-6

至此上传完成。

完成各阶段所需时间:

1,被测类代码编写 30%

2,测试类代码编写 40%

3,运行测试 10%

4,上传代码到GitHub 20%

附:GitHub JUnit_Test库地址 https://github.com/yujk1230/JUnit_Test
参考资料:http://my.oschina.net/Chaos777/blog/349167
http://blog.csdn.net/stevenhu_223/article/details/8269157
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: