java单元测试怎么写

编程语言及工具

104人已加入

描述

  Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

  Java具有简单性、面向对象、分布式、健壮性、安全性、平***立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

  单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

  在一种传统的结构化编程语言中,比如C,要进行测试的单元一般是函数或子过程。在像C++这样的面向对象的语言中, 要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是在独立的过程和函数,还是在Ada包的级别上进行单元测试。单元测试的原则同样被扩展到第四代语言(4GL)的开发中,在这里基本单元被典型地划分为一个菜单或显示界面。

  经常与单元测试联系起来的另外一些开发活动包括代码走读(Code review),静态分析(Static analysis)和动态分析(Dynamic analysis)。静态分析就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行。动态分析就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。

  java单元测试的写法

  首先创建一个java工程,在工程中创建一个被单元测试的Student数据类,如下:

  [java] view plain copypackage com.phicomme.hu;

  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;

  }

  }

  在eclipse下单元测试这个类:

  首先导入Junit包:选中java工程,点击鼠标右键---》选择properties----》在窗口中选Java Build Path----》在右侧点击Add Library----》在弹出的窗口列表中选中Junit----》下一步-----》Junit 4(我用的是Junit 4)----》finish

  这样Junit 4包就导完了,接下来就是创建测试类:

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

  测试类1:

  [java] view plain copypackage com.phicomme.test;

  import com.phicomme.hu.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:

  [java] view plain copypackage com.phicomme.test;

  import junit.framework.TestCase;

  import com.phicomme.hu.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());

  }

  }

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

  代码如下:

  [java] view plain copypackage com.phicomme.test;

  import com.phicomme.hu.StudentTest02;

  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.addTest(p);

  //suite.addTest(p1);

  suite.addTestSuite(StudentTest.class);

  suite.addTestSuite(StudentTest01.class);

  return suite;

  }

  }

  最后,分别测试以上三个类(选中需要测试的类----》鼠标右键----》Run As----》Junit Test):

  StudentTest类的测试结果图:

  单元测试

  StudentTest01类的测试结果图:

  单元测试

  AllTest类的测试结果图:

  单元测试

  有关java的测试就讲到这里,希望对大家有帮助,有时间也会接着讲讲有关android的单元测试,和在手机上实现编写一个UI界面替代eclipse如上图中的测试界面;

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分