Java 单元测试(Junit)

在有些时候,我们需要对我们自己编写的代码进行单元测试(好处是,减少后期维护的精力和费用),这是一些最基本的模块测试。当然,在进行单元测试的同时也必然得清楚我们测试的代码的内部逻辑实现,这样在测试的时候才能清楚地将我们希望代码逻辑实现得到的结果和测试实际得到的结果进行验证对比。

废话少说,上代码:

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

package 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:

package 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:

package 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类实现,它相当于是一个套件,可以把所有测试类添进来一起运行测试;

代码如下:

package 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如上图中的测试界面;

本文转自:http://blog.csdn.net/stevenhu_223/article/details/8269157

时间: 2024-10-09 05:28:44

Java 单元测试(Junit)的相关文章

Java 单元测试Junit

@Test @Before @After 测试方法运行前执行Before动作(比如创建资源),运行后执行After动作(比如销毁资源) @BeforeClass @AfterClass 测试类运行前执行Before动作(比如创建资源),运行后执行After动作(比如销毁资源) Assert 对方法结果进行判断,是否等于希望值,是否为空等 表示测试通过不通过 Java 单元测试Junit,布布扣,bubuko.com

Java单元测试Junit的Annotation介绍

单元测试是开发者的业界良心 Java开发中常以Junit作为测试框架,而且Junit也成为Java社区测试方面的事实标准,可以百度一些看看Junit的相关介绍.目前Junit发展到了Junit4.x版本,相对之前的Junit3.x版本有着明显的变化就是使用了Annotation的方式来注解测试用例. 下面是关于Junit4.x的常用注解说明图: Java单元测试Junit的Annotation介绍

Java单元测试(Junit+Mock+代码覆盖率)---------转

Java单元测试(Junit+Mock+代码覆盖率) 原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性. 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 变量没有赋值(即为NULL) 变

Java单元测试(Junit+Mock+代码覆盖率)

原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性. 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 变量没有赋值(即为NULL) 变量是数值(或字符) 主要边界:最小值,最大值,无穷大(

java单元测试(Junit)

最基本的模块测试 1:首先创建一个java工程,在工程中创建一个被单元测试的Student数据类,如下: package UnitTest; 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

java单元测试junit中报错

java.lang.IllegalStateException: Failed to load ApplicationContextat org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99)at org.springframework.test.context.TestContext.getApplicationCo

Junit Java单元测试

Junit是一种java单元测试的工具,让我们的测试提高效率 入门篇 我们先来看一个测试加法add的例子 先创建一个AddOperation的类(我们要测试的类) package work; publicclass AddOperation { publicint add(int x,int y){ return x+y; } } 给该类添加测试类 详细请看图 选择你要测试的类 package work; importstatic org.junit.Assert.*; import org.j

Java单元测试框架 JUnit

Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一个. JUnit有它自己的JUnit扩展生态圈.多数Java的开发环境都已经集成了JUnit作为单元测试的工具. 在线Javadoc:http://ww...更多JUnit信息 最近更新: JUnit 4.12 发布,Java 单元测试框架 发布于4个月前 C++模拟测试框架 Google Mock

菜鸟学Java(二十一)——如何更好的进行单元测试——JUnit

测试在软件声明周期中的重要性,不用我多说想必大家也都非常清楚.软件测试有很多分类,从测试的方法上可分为:黑盒测试.白盒测试.静态测试.动态测试等:从软件开发的过程分为:单元测试.集成测试.确认测试.验收.回归等. 在众多的分类中,与开发人员关系最紧密的莫过于单元测试了.像其他种类的测试基本上都是由专门的测试人员来完成,只有单元测试是完全由开发人员来完成的.那么今天我们就来说说什么是单元测试,为什么要进行单元测试,以及如更好的何进行单元测试. 什么是单元测试? 单元测试(unit testing)