Junit单元测试的使用
一、Junit介绍
Junit是java语言的单元测试框架,需要程序员自身进行编写测试用例,也称为白盒测试。使用它可以大大的提高开发的效率。比如一个web项目添加一个新服务后,需要重新部署进行测试。这时就可以使用Junit进行测试。
二、基本使用
@BeforeClass:在所有方法开始前执行,仅仅执行一次。注意:方法必须为静态的。
@Before:在每个方法开始前执行。
@Test:需要加上该注解,junit才会对其进行单元测试。要测试的方法
@After:在每个方法结束后执行。
@AfterClass:在所有方法结束后执行,仅仅执行一次。注意:方法必须为静态的。
public class JunitTest {
@BeforeClass
public static void beforeClass(){
System.out.println(“BeforeClass”);
System.out.println(“——————————”);
System.out.println(“”);
}
@Before
public void before(){
System.out.println(“before”);
System.out.println(“——————————”);
}
@Test
public void method1(){
System.out.println(“method1”);
System.out.println(“——————————”);
}
@Test
public void method2(){
System.out.println(“method2”);
System.out.println(“——————————”);
}
@After
public void after(){
System.out.println(“after”);
System.out.println(“——————————”);
}
@AfterClass
public static void afterClass(){
System.out.println(“AfterClass”);
System.out.println(“——————————”);
}
}
三、具体测试实例
需求:模拟学生管理系统,对学生进行增删改查操作,使用Junit进行单元测试
//定义学生类
class Student{
private String name;
private Integer number;
public Student() {
}
public Student(Integer number, String name) {
this.number = number;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", number=" + number +
'}';
}
}
//定义学生的服务类
class MyService{
//存放所有的学生
private ArrayList students;
//设置最多存放的个数
private final int MAX=5;
public MyService(){
students=new ArrayList<>();
}
//添加成功返回该学生
public Student addStudent(Student student){
if(students.size()==5){
return null;
}else {
students.add(student);
return student;
}
}
public Student deleteStudentByNumber(Integer number){
//删除成功返回该学生
Student student=this.findStudentByNumber(number);
if(student!=null){
students.remove(student);
return student;
}
return null;
}
//更新成功返回更新后学生
public Student updateStudent(Student student){
Student old=findStudentByNumber(student.getNumber());
if(old!=null){
old.setName(student.getName());
return old;
}
return null;
}
//根据number查找学生
public Student findStudentByNumber(Integer number){
for(Student s:students){
if(s.getNumber()==number){
return s;
}
}
return null;
}
//查询所有学生
public ArrayList<Student> selectAll(){
return students;
}
}
//对服务类中的方法进行测试
public class JunitTest {
MyService myService=null;
Student student1,student2,student3;
@Before
public void init(){
System.out.println(“测试开始,初始化”);
myService=new MyService();
student1=new Student(1001,”学生1”);
student2=new Student(1002,”学生2”);
student3=new Student(1003,”学生3”);
myService.addStudent(student1);
myService.addStudent(student2);
myService.addStudent(student3);
System.out.println(“——————————”);
}
@Test
public void testAddMethod(){
System.out.println(“—测试添加学生方法—”);
Student student4=new Student(1004,”学生4”);
Student student=myService.addStudent(student4);
if(student!=null){
System.out.println(“添加学生成功”+student.toString());
}else {
System.out.println(“空间已满,添加学生失败”);
}
}
@Test
public void testSelectAllMethod(){
System.out.println("---测试查询学生方法---");
ArrayList<Student> students=myService.selectAll();
for (Student student:students){
System.out.println(student.toString());
}
}
@After
public void end(){
System.out.println("------------------------------");
System.out.println("测试结束,模拟清除内存");
}
}
运行结果:
运行testAddMethod():
运行testSelectAllMethod():