`
oufeng1983
  • 浏览: 25137 次
社区版块
存档分类
最新评论

测试驱动开发-----使用Junit

阅读更多

传统测试的问题:
1.测试滞后。传统的软件开发流程,大多采用瀑布流程。它将软件开发分为需求,分析设计与编著码,整合,测试等阶段,这样折流程很直观,介会导致测试滞后。
2。时间仓促:时间仓促是软件项目最常见的一个问题材和风险,也是测试不能有效完成的原因之一。由于前戎投入过多精力在程式序设计与编码,最后只留下少量时间进行测试。
3。高风险。
在Java中,习惯的测试方法是"testing main",就是第个class都应该有一个用于测试的main函数。这是一个合理的习惯,介这种作法很难运行多个测试或者说同时运行多个测试案例。面JUnit框架恰恰做到了这点,它具备运行自动测试套件的能力。首先来看顾一下JUnit框架的3个核心概念
.TestCase(测试案例):扩展了JUnit的TestCase类。它以testXXX的形式包含一个或多个测试方法。一个test case把具有公共行为的测试归入一组。
.TestSuite(测试套件):一组测试。一个test suit是把多个相关测试归入一组的便捷方式。
.TestRunner(测试运行器):执行test suite的程序。JUnit提供了几个test runner,可以用它们来执行测试。
测试案例:

我们先写一个student类

java 代码

 

  1. public class Student {      
  2.     private String _number;      
  3.     private String _name;      
  4.     private int _score;      
  5.      
  6.     public Student() {      
  7.         _number = null;      
  8.         _name = null;      
  9.         _score = 0;      
  10.     }      
  11.        
  12.     public Student(String num, String name, int score) {      
  13.         _number = num;      
  14.         _name = name;      
  15.         _score = score;      
  16.     }      
  17.      
  18.     public String getNumber() {      
  19.         return _number;      
  20.     }      
  21.      
  22.     public String getName() {      
  23.         return _name;      
  24.     }      
  25.      
  26.     public int getScore() {      
  27.         return _score;      
  28.     }      
  29.      
  30.     public void setNumber(String num) {      
  31.         _number = num;      
  32.     }      
  33.      
  34.     public void setName(String name) {      
  35.         _name = name;      
  36.     }      
  37.      
  38.     public void setScore(int score) {      
  39.         _score = score;      
  40.     }      
  41. }    


接下来我们写一个测试方法类

java 代码
  1. import junit.framework.*;      
  2. public class TestIt extends TestCase {      
  3.     public TestIt(String name) {      
  4.         super(name);      
  5.     }      
  6.     public void testGetMethod() {      
  7.         Student student = new Student("B83503124""Justin"100);      
  8.         assertEquals("B83503124", student.getNumber());      
  9.         assertEquals("Justin", student.getName());      
  10.         assertEquals(100, student.getScore());      
  11.     }      
  12.     public void testSetMethod() {      
  13.         Student student = new Student();      
  14.         student.setNumber("B83503124");      
  15.         student.setName("Justin");      
  16.         student.setScore(100);      
  17.         assertEquals("B83503124", student.getNumber());      
  18.         assertEquals("Justin", student.getName());      
  19.         assertEquals(10, student.getScore());      
  20.     }      
  21. }    


接下来就是运行测试。运行测试方法有很多种。
一。直接在eclipse中运行JunitTest TestIt类。
二。写一个简单的test main

java 代码
  1.   
  2. import junit.framework.*;      
  3.      
  4. public class Main {      
  5.     public static void main(String[] args) {      
  6.         junit.textui.TestRunner.run(TestIt.class);      
  7.     }      
  8. }     


java 代码输出结果是:

java 代码
  1.   
  2. ..FT      
  3. ime: 0.027     
  4. There was 1 failure:      
  5. 1) testSetMethod(TestIt)junit.framework.AssertionFailedError: expected:<10> but      
  6. was:<100>      
  7.         at TestIt.testSetMethod(TestIt.java:22)      
  8.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)      
  9.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)      
  10.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)      
  11.         at Main.main(Main.java:5)      
  12.      
  13. FAILURES!!!      
  14. Tests run: 2,  Failures: 1,  Errors: 0    


三。可以在TestIt中重构suite()方法在JUnit 2.0之后,提供一个简单的动态方法构建TestSuit套件,您只要將TestCase的Class对像传給它作为參數就可以了

java 代码
  1. public static Test suite() {      
  2.     return new TestSuite(TestIt.class);      
  3. }    


四。可以使用静态的方法来构建TestSuite套件

  1. public static Test suite() {      
  2.     TestSuite suite= new TestSuite();      
  3.     suite.addTest(      
  4.         new TestIt("TestGet") {      
  5.             protected void runTest() { testGetMethod(); }      
  6.         }      
  7.     );      
  8.      
  9.     suite.addTest(      
  10.         new TestIt("TestSet") {      
  11.             protected void runTest() { testSetMethod(); }      
  12.         }      
  13.     );      
  14.     return suite;      
  15. }    
java 代码



最后总结下单元测试技巧:
1.选择容易出错的地方。
2.录找临界条件
3.检查异常 是否如期出现

 
分享到:
评论

相关推荐

    JUnit 4测试驱动开发----junit技术讲解

    本文将深入讲解JUnit 4的关键特性和如何进行测试驱动开发。 1. 预备知识 在开始使用JUnit 4进行测试之前,了解一些预备知识是必要的。例如,Java 5引入的可变长参数(Variable-Length Arguments)允许函数接收不定...

    junit-4.12.jar下载

    首先,`junit-4.12.jar`是JUnit的核心库,包含了运行和编写单元测试所需的所有类和接口。使用这个库,开发者可以创建测试类,定义测试方法,并使用各种断言来检查程序行为是否符合预期。例如,你可以使用`@Test`注解...

    测试驱动开发with Junit(三)

    总结,"测试驱动开发with JUnit(三)"这一主题涵盖了TDD的基本理念和JUnit的使用技巧,通过学习,开发者能够更有效地运用TDD实践来提高代码质量和可维护性。通过阅读提供的PDF文档,你可以深入了解TDD的实施步骤和...

    junit-4.13.2的压缩包,直接下载到本地解压后即可使用

    总结来说,Junit-4.13.2作为Java单元测试的首选工具,它的功能强大且易于使用。无论是IDEA还是Eclipse,都提供了丰富的支持,让测试工作更加高效。通过熟练掌握Junit,开发者可以编写出更健壮、更可维护的代码,提升...

    junit-4.12-jar.rar

    JUnit是Java编程语言中最常用的单元测试框架之一,用于编写和运行可重复的自动化测试用例。...通过理解并熟练运用这些资源,开发者能够更好地进行测试驱动开发(TDD),确保代码的质量和可维护性。

    测试驱动开发-多币种实例3 笔记

    测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际代码之前先编写测试用例。这种做法有助于确保软件的质量,因为每个功能或模块都必须通过预先定义的测试才能被认为是完整的。在...

    struts-json-plugin-2.1.8.jar struts2-junit-plugin-2.1.8.jar json-lib-2.1.jar

    接着是`struts2-junit-plugin-2.1.8.jar`,这是一个用于Struts2的JUnit测试插件。它扩展了JUnit,使得Struts2的控制器可以在单元测试环境中运行,从而能够更好地测试Action和整个MVC流程。这个插件在2.1.8版本中也...

    junit-libs:junit测试包

    - 测试驱动开发是一种编程实践,先编写测试用例,然后编写刚好能让测试通过的代码。JUnit是TDD的重要工具,帮助开发者确保代码的质量。 5. 集成测试工具: - JUnit与Mockito结合,可以模拟对象的行为,使测试更加...

    junit-4.8.2版本下载

    下载的`junit-4.8.2.jar`文件包含了JUnit库的所有类和方法,可以在项目中作为依赖引入。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;junit &lt;artifactId&gt;junit &lt;version&gt;4.8.2 &lt;scope&gt;...

    软件测试实验-JUnit单元测试.pdf

    JUnit的应用是用于测试驱动开发(TDD),它可以提高软件测试的效率和质量,并提高开发者对测试驱动开发的理解和应用。 本实验旨在学习使用JUnit进行单元测试,掌握JUnit编写测试代码的方法,并应用JUnit进行单元...

    junit-4.9.zip,java测试包junit-4.9的jar包免费下载

    标题中的"junit-4.9.zip"是一个包含JUnit 4.9版本的压缩包,提供了一个便捷的方式供开发者下载和使用。这个版本的JUnit是专门为Java程序员设计的,帮助他们确保代码的质量和稳定性。 单元测试是软件开发过程中的...

    junit-4.9官方下载

    在给定的标题“junit-4.9官方下载”中,我们关注的是JUnit的第4.9版本,这是一个稳定且广泛使用的版本。这个版本包含了对先前版本的一些改进和新功能,使得开发者能够更有效地编写和运行测试。 描述中提到的三个...

    测试驱动开发With Junit

    总结,测试驱动开发With Junit涉及到的主要知识点包括: - TDD(测试驱动开发)的概念和流程 - JUnit作为Java的单元测试框架,如何创建测试类和测试方法 - 如何使用`assert`方法进行断言,确保代码行为正确 - 创建和...

    junit-3.8.1.jar资源

    在使用`junit-3.8.1.jar`时,开发者需要将其添加到项目的类路径中,然后就可以开始编写和运行测试了。同时,配合IDE(如Eclipse、IntelliJ IDEA)的JUnit插件,可以方便地管理和执行测试,查看测试结果和调试问题。

    junit-4.10.jar,junit集合

    在使用`junit-4.10.jar`时,开发者通常会将其添加到项目的类路径中,这样就可以在IDE(如Eclipse、IntelliJ IDEA)中直接运行测试。同时,构建工具如Maven或Gradle也有相应的配置来管理和执行JUnit测试。 总结来说...

    junit-master.zip

    《深入理解JUnit:Java单元测试框架的探索与实践》 JUnit是Java编程语言中最流行的单元测试框架之一...通过深入学习和实践,我们可以更好地掌握这个强大的框架,从而在开发过程中实现更好的测试驱动开发(TDD)实践。

    ant-junit-1.8.1.jar.zip

    "ant-junit-1.8.1.jar"可能就是这个Ant版本中包含Junit支持的特定构建模块,使得开发者能够在Ant构建脚本中直接运行JUnit测试。 JUnit是一个流行的单元测试框架,用于编写和运行Java代码的自动化测试。它允许开发...

    junit-4.9.jar.zip

    JUnit是Java编程语言中最常用的单元测试框架之一,主要用于软件开发过程中的测试驱动开发(TDD)和行为驱动开发(BDD)。它使得开发者能够编写可重复执行的测试用例,确保代码的质量和功能的正确性。`junit-4.9.jar....

Global site tag (gtag.js) - Google Analytics