51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3335|回复: 0
打印 上一主题 下一主题

MyEclipse使用Junit进行测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-5-9 22:36:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

回归测试:当软件发生变化时,重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。

一.准备工作

1.       创建Junit测试工程

2.       导入Junit..jar包

3.       导入被测接口API Jar包

4.       创建test文件目录(存放测试类)(一般命名为test)

5.       在test目录下创建com.junit.test包

6.       在com.junit.test包中创建测试类(一般命名规则:被测试类名+Test,例如:CreateInfoTest)继承junit.framework.Testcase类

7.       导入需要的包后,开始编写测试方法(方法名称必须以test+用例方法名称)


举例:

被测试类:



public class CreateInfo

{

  public CreateInfo()

{

   Super();

}



  //被测试方法1

  public static String Say(String words)

{

   return words;

}

//被测试方法2

public static int Cal(int a,int b)

{

return a*b;

}

}





编写测试类方法一:

import junit.framework.*;

import junit.testui.TestRunner;

public Class CreateinfoTest extends TestCase//需要继承TestCase类

{

   public CreateinfoTest(String name)

{

  Super(name);

}

//测试被测方法1

public void testSay()//test+被测方法名

{

assertEquals(“学习Junit”, CreateInfo.Say(“学习Junit”));

}

//测试被测方法2

public void testCal()//测试方法命名必须符合规范,test+被测试方法名

{

assertEquals(50, CreateInfo.Cal(5,10));//Assert断言,断言就是针对测试目标做出一个是或者否的结论。Org.junit.Assert类是一系列断言方法的集合

}



//main方法执行测试方法

public static void main(String[] args)

{

TestRunner.run(CreateinfoTest.class);//执行此测试类中所有的测试方法

}



}

备注:

执行main方法后控制台会出现:

结果1:

..

Time:0

OK (2 tests)

或者会出现结果2:

..F

Time:0

There was 1 failure



JUnit报告测试没有成功,区分为失败(failures)和错误(errors)。失败是你的代码中的Assert方法失败引起的;而错误则是代码异常引起



注解:

Time上的小点表示测试的个数,如果测试通过则显示ok. 否则在小点后边标上F,表示该测试失败。

综上所述:编写测试类的基本步骤

(1)      扩展TestCase类

(2)      覆盖runTest()方法。(可选)

(3)      写一些testXXXXX()方法






编写测试类方法二:

Junit4注解的使用。(Junit最新jar包)

@BeforeClass :所有测试开始之前被系统运行,只运行一次

@AfterClasss:所有测试结束之后被系统调用,只运行一次

@Before:每个测试方法执行之前运行,有多少个测试方法就被运行多少次.必须是static的

@After: 每个测试方法执行结束后运行,有多少个测试方法就被运行多少次.必须是static的



@lgone:被忽略的测试方法

@Test:测试方法,即是一个测试用例



例子:Junit4注解式测试方法示例(测试类不用继承Testcase)

Package com.junit.test;//测试类存放的包

import static org.junit.Assert.*;

import static org.hamcrest.Matchers.*;

import org.junit.*;



public class Createinfo2Test  //没有继承Test类

{

   @BeforClass

  public static void beforeClass()

{

  System.out.println(“开始执行所有测试用例。。。。。”);

}



   @AfterClass

Public static void afterClass()

{

  System.out.println(“所有测试用例执行完毕。。。”);

}

@Before

  public void before()

{

  System.out.println(“执行一个测试方法开始。”);

}

@After

  public static after()

{

  System.out.println(“执行一个测试方法结束”);

}

//测试被测方法1

@Test(timeout=60000)//可选参数timeout用来指定限时测试

public void testSay()//test+被测方法名

{

assertEquals(“学习Junit”, CreateInfo.Say(“学习Junit”));

}

//测试被测方法2

@Test(excepted=Exception.class)  //可选参数excepted用于测试一个预期的异常//(excepted=java.lang.NullException , timeout=1000)

public void testCal()//测试方法命名必须符合规范,test+被测试方法名

{

assertEquals(50, CreateInfo.Cal(5,10));

}

@Ignore(“还未编写好”)//忽略此测试方法testAdd  原因为: 还未编写好

@Test

public void testAdd()

{

}





}

//右键Run As>>Junit Test 执行测试用例方法



强调:有多个测试方法类的时候可使用测试套件(TestSuit) //测试套件:多个测试的组合;

具体介绍:

(1)Suite类:套件运行器,负责运行测试套件(TestSuit)

使用套件运行器的方法:@Runwith(Suite.class).

使用Suite.SuiteClasses注释来创建测试套件

(2)JunitCore类:直接担负起运行测试的具体工作

首先需要创建其实例对象

JunitCore core=new JunitCore();

然后可运行具体的测试类了

Core.run(CreateinfoTest .class);

(3)Result类是一个收集器。可以收集测试结果的概要信息。

方法名
方法名说明

Int getFaliureCount()
测试失败的数目

List getFaliures()
测试失败的描述

Int getIgnoreCount()
忽略的测试数

int getRunCount()
测试总数

Long  getRunTime()
测试运行时间(毫秒)

Boolean wasSuccessful()
如果全部测试成功则为true





例子:

新建测试套件类



Impore org.junit.runner.runwith;

Import org.junit.runners.Suite;

@RunWith(Suite.class)

@Suite.SuiteClasses({Createinfo2Test .class, CreateinfoTest.class  })

public class AllTests()

{

}



新建执行测试套件类



Import org.junit.runner.JunitCore;



public class JuniteCoreTest()

{

JunitCore core=new JunitCore();//创建执行器实例

core.run(AllTests.class);//执行测试套件(执行测试套件注明的类)

core.run(CreateinfoTest.class);//直接运行测试类



}



新建收集测试结果类



Import org.junit.runner.JunitCore;

Import  org.junit.runner.Result;



Public class TestResult

{



JunitCore core=new JunitCore();//创建执行器实例

//收集测试结果信息

Result re= core.run(AllTests.class);//注明收集哪些测试类的结果

System.out.println(“测试总数”+re.getRunCount());



}

至此Junit的使用介绍完毕
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-28 08:22 , Processed in 0.066766 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表