- 浏览: 60207 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
jijiuzhou:
...
spring 第二天 访问资源文件 以及各种乱七八糟的错误信息以及解决办法 -
金米线:
感觉学习理解的不够深入,准备在重新学习一遍
测试驱动开发 我的现金系统 -
锅巴49:
Outer outer=new Outer();
Outer. ...
java 调用内部类
public class CourseSessionTest extends junit.framework.TestCase { public void testCreate(){ CourseSession session = new CourseSession("ENGL","101"); Student student1 = new Student("mixian"); Student student2 = new Student("longquan"); session.enroll(student1); session.enroll(student2); java.util.ArrayList<Student> studentList =session.getAllStudentList(); assertEquals(student1,studentList.get(0)); assertEquals(student2,studentList.get(1)); assertEquals(2,studentList.size()); assertEquals("ENGL",session.getName()); assertEquals("101",session.getNumber()); assertEquals(2,session.getNumberofstudent()); CourseSession session2 = new CourseSession("CHIN","102"); assertEquals("CHIN",session2.getName()); assertEquals("102",session2.getNumber()); //assertEquals(2,session2.getNumberofstudent()); } }
前面已经介绍了基本的测试方法,继续java基础的介绍
有学生类以后还要有课程类,用来记录课程名称、编号、学生人数、学分等
public class CourseSessionTest extends junit.framework.TestCase { public void testCreate(){ CourseSession session = new CourseSession("ENGL","101"); assertEquals("ENGL",session.getName()); assertEquals("101",session.getNumber()); assertEquals(0,session.getNumberofstudent()); CourseSession session2 = new CourseSession("CHIN","102"); assertEquals("CHIN",session2.getName()); assertEquals("102",session2.getNumber()); assertEquals(1,session2.getNumberofstudent()); } }
class CourseSession{ private String name; private String number; private int studentnumber=0; CourseSession(String name,String number){ this.name=name; this.number = number; } public void enroll(Student student){ studentnumber++; } public void setName(String name){ this.name = name; } public void setNumber(String number){ this.number = number; } public String getName(){ return this.name; } public String getNumber(){ return this.number; } public int getNumberofstudent(){ return studentnumber; } }
这样需要引入Student这个类
然后更改测试CourseSessionTest类
public class CourseSessionTest extends junit.framework.TestCase { public void testCreate(){ CourseSession session = new CourseSession("ENGL","101"); Student student1 = new Student("mixian"); Student student2 = new Student("longquan"); session.enroll(student1); session.enroll(student2); assertEquals("ENGL",session.getName()); assertEquals("101",session.getNumber()); assertEquals(2,session.getNumberofstudent()); CourseSession session2 = new CourseSession("CHIN","102"); assertEquals("CHIN",session2.getName()); assertEquals("102",session2.getNumber()); // assertEquals(1,session2.getNumberofstudent()); } }
class CourseSession{ private String name; private String number; private int studentnumber=0; CourseSession(String name,String number){ this.name=name; this.number = number; } public void enroll(Student student){ studentnumber++; } public void setName(String name){ this.name = name; } public void setNumber(String number){ this.number = number; } public String getName(){ return this.name; } public String getNumber(){ return this.number; } public int getNumberofstudent(){ return studentnumber; } }
明显是由于在类中没有引入Student类。修改一下就好了
现在系统中有2个测试用例 一个是StudentTest.java 和CourseSessionTest.java
为了确保测试都可以同时运行成功,所以要用到测试组件,将2个TEST全部加入到测试组件中一起运行。
public class AllTest{ public static junit.framework.TestSuite suite = new junit.framework.TestSuite(); suite.add(StudentTest.class); suite.add(CourseSessionTest.class); reaturn suite; }
创建套件并返回,有junit.frameword.TestSuite来管理套件
suite必须是static静态的
稳定版本:
class CourseSession{ private String name; private String number; private int studentnumber=0; private java.util.ArrayList<Student> studentList = new java.util.ArrayList<Student>(); CourseSession(String name,String number){ this.name=name; this.number = number; } public java.util.ArrayList<Student> getAllStudentList(){ return studentList; } public void enroll(Student student){ studentnumber++; studentList.add(student); } public void setName(String name){ this.name = name; } public void setNumber(String number){ this.number = number; } public String getName(){ return this.name; } public String getNumber(){ return this.number; } public int getNumberofstudent(){ return studentnumber; } }
发现很多地方可以重构:
1:学生数量 不需要单独定义变量只需要过去List的长度
如果在两个或2个以上的方法中需要创建一个类的时候,可以定义成员变量,然后用setup()方法提前初始化,这样的好处就是只需要初始化一次。如代码所示:
public class CourseSessionTest extends junit.framework.TestCase { private CourseSession session; public void setUp(){ session = new CourseSession("ENGL","101"); } public void testCreate(){ //CourseSession session = new CourseSession("ENGL","101"); Student student1 = new Student("mixian"); Student student2 = new Student("longquan"); session.enroll(student1); session.enroll(student2); java.util.ArrayList<Student> studentList =session.getAllStudentList(); assertEquals(student1,studentList.get(0)); assertEquals(student2,studentList.get(1)); assertEquals(2,studentList.size()); assertEquals("ENGL",session.getName()); assertEquals("101",session.getNumber()); //assertEquals(2,session.getNumberofstudent()); /* CourseSession session2 = new CourseSession("CHIN","102"); assertEquals("CHIN",session2.getName()); assertEquals("102",session2.getNumber()); //assertEquals(2,session2.getNumberofstudent()); */ } }
在这里将测试招收学生的方法分离出来
public class CourseSessionTest extends junit.framework.TestCase { private CourseSession session; public void setUp(){ session = new CourseSession("ENGL","101"); } public void testEnroll(){ Student student1 = new Student("mixian"); Student student2 = new Student("longquan"); session.enroll(student1); session.enroll(student2); java.util.ArrayList<Student> studentList =session.getAllStudentList(); assertEquals(student1,studentList.get(0)); assertEquals(student2,studentList.get(1)); assertEquals(2,studentList.size()); } public void testCreate(){ //CourseSession session = new CourseSession("ENGL","101"); assertEquals("ENGL",session.getName()); assertEquals("101",session.getNumber()); //assertEquals(2,session.getNumberofstudent()); /* CourseSession session2 = new CourseSession("CHIN","102"); assertEquals("CHIN",session2.getName()); assertEquals("102",session2.getNumber()); //assertEquals(2,session2.getNumberofstudent()); */ } }
然后你发现测试招收学生的方法过于繁琐,所以重构后的方式是删除session.getStudentList();方法在Student中增加一个GET方法,避免student列表整个暴露出来
重构后的代码如下:
public class CourseSessionTest extends junit.framework.TestCase { private CourseSession session; public void setUp(){ session = new CourseSession("ENGL","101"); } public void testEnroll(){ Student student1 = new Student("mixian"); Student student2 = new Student("longquan"); session.enroll(student1); session.enroll(student2); //重构删除 避免整个list暴露出来 //java.util.ArrayList<Student> studentList =session.getAllStudentList(); //assertEquals(student1,studentList.get(0)); //assertEquals(student2,studentList.get(1)); //assertEquals(2,studentList.size()); assertEquals(student1,session.get(0)); assertEquals(student2,session.get(1)); assertEquals(2,session.getNumberofstudent()); } public void testCreate(){ //CourseSession session = new CourseSession("ENGL","101"); assertEquals("ENGL",session.getName()); assertEquals("101",session.getNumber()); //assertEquals(2,session.getNumberofstudent()); /* CourseSession session2 = new CourseSession("CHIN","102"); assertEquals("CHIN",session2.getName()); assertEquals("102",session2.getNumber()); //assertEquals(2,session2.getNumberofstudent()); */ } }
发表评论
-
spring ioc
2011-10-08 14:28 559待补 -
spring aop
2011-10-08 14:27 668待补 -
eclipse内部启动tomcat,eclipse外部启动tomcat,去掉8080端口访问
2011-09-22 11:21 50251 : eclipse web 工 ... -
测试驱动开发实战之各个击破
2010-12-13 12:48 751项目测试: import org.junit.Before; ... -
tomcat配置https
2010-11-15 13:34 1060参考文档Keytool使用指南:http://java.sun ... -
远程调试java
2010-11-07 16:29 797需求: 我是在eclipse开发工程,通过tomca ... -
测试驱动开发 我的现金系统
2010-10-24 16:05 942本文以我的现金系统为例来介绍如何用测试驱动开发。 主要以货币 ... -
基础乱七八糟命令
2010-10-11 18:38 730命令行删除文件:del+文件名称 java中 fi ... -
测试驱动开发
2010-10-09 11:03 9531安装java ant 2写helloworld clas ... -
spring 第二天 访问资源文件 以及各种乱七八糟的错误信息以及解决办法
2010-09-08 22:13 1225我在用spring访问资源文件的时候出错了 urlresou ... -
spring 40天全程跟踪 第一天spring发送邮件
2010-08-19 16:47 1244com.sun.mail.smtp.SMTPSendFaile ... -
spring 40天全程跟踪 第一天spring依赖注入控制反转
2010-08-19 14:19 742以前都是用MyEclipse集成开发,开发速度快,但是很多时候 ... -
java 对文件的操作
2010-08-18 20:39 800java 遍历文件夹文件: package com.mixi ... -
java list arraylist map 集合
2010-08-17 23:41 1457package com.mixian.list; imp ... -
java 线程安全 和同步方法
2010-08-17 21:32 658package com.mixian.thread; p ... -
java 调用内部类
2010-08-15 10:37 5093调用内部类的某个方法 ... -
链接支付宝查询出错
2010-08-12 16:18 950在去支付宝查询用户数据的时候报错: java.lang.Ru ... -
java log4j 错误日志
2010-08-12 10:06 947import org.apache.commons.loggi ... -
java 反射机制原理及实例
2010-08-11 23:26 1188能够分析类能力的程序成为反射。 xx.getClass(). ... -
java 一些基本技巧
2010-08-10 07:37 6341 数组 数组在初始化的时候就需要规定其大小,不 ...
相关推荐
Java测试驱动开发(TDD,Test-Driven Development)是一种软件开发方法论,它强调在编写实际功能代码之前先编写测试代码。TDD的核心理念是“先写测试,再写代码”,这种模式有助于确保代码的质量,减少错误,并促进...
全书内容循序渐进,先侧重基础内容,讨论测试驱动开发和验收,然后进入动手实践部分,逐一讲解如何对各种技术应用TDD,最后介绍基于验收测试驱动的测试先行的方式构建完整的系统。本书面向各个层次的Java程序员。...
标题中的“TDD测试驱动开发文档详细”表明这是一个关于TDD的详细资料集合,可能涵盖了TDD的理论基础、实践步骤、工具使用等方面。描述中提到的“java TDD测试开发流程”,意味着这些文档专注于Java语言的TDD实践,...
其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解、掌握...
### Agile Java中文版 测试驱动开发的编程技术 #### 一、概述 《Agile Java中文版 测试驱动开发的编程技术》是一本由美国作者Jeff Langr所著,涂波与孙勇翻译的重要著作。该书于2006年由电子工业出版社出版,全书...
《代码大全2》和《测试驱动开发》是两本在软件工程领域极具影响力的书籍,它们分别探讨了编程实践和测试策略的重要方面。 《代码大全2》由Steve McConnell撰写,是编程界的经典之作,主要关注如何编写高质量的代码...
本书深入探讨了如何将测试驱动开发(TDD)原则应用于Java应用程序的开发过程中,为读者提供了全面的指导和支持。 #### TDD的核心概念 **测试驱动开发(Test-Driven Development)**是一种软件开发方法论,它强调在编写...
Java测试驱动开发(Test-Driven Development,TDD)是一种软件开发方法,它强调在编写实际功能代码之前,先编写测试代码。这种做法有助于确保代码的质量,降低错误率,并且能够及时发现和修复问题。以下是对Java TDD...
全书内容循序渐进,先侧重基础内容,讨论测试驱动开发和验收,然后进入动手实践部分,逐一讲解如何对各种技术应用TDD,最后介绍基于验收测试驱动的测试先行的方式构建完整的系统。本书面向各个层次的Java程序员。...
《敏捷Java驱动测试开发》是针对Java开发人员和团队的一份重要参考资料,它深入探讨了如何在敏捷开发环境中高效地进行测试驱动开发(TDD)。本文将围绕这一主题,详细阐述敏捷开发理念、Java测试框架的使用以及TDD在...
《测试驱动开发的艺术》一书深入探讨了TDD在Java开发中的实践和技巧,为开发者提供了宝贵的指导。 TDD的核心流程可以概括为“红-绿-重构”三步: 1. **红**:首先,开发者编写一个最小化的、不能通过的测试用例。...
产品等级测试驱动开发是软件开发过程中的一个关键实践,它强调在编写实际代码之前先创建测试用例。这种做法能够确保代码的质量,并且在开发早期就发现潜在的问题。在【标题】"产品等级测试驱动开发和最新动态1"中,...
测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,它要求开发者在编写实际功能代码之前先编写测试代码。在这个过程中,Junit是一个关键的工具,它是一个Java编程语言的单元测试框架,广泛用于...
测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际代码之前先编写测试用例。这种做法有助于确保软件的质量,因为每个功能或模块都必须通过预先定义的测试才能被认为是完整的。在...
在“java基础知识应用”这个主题中,我们主要探讨的是Java语言的基础概念及其在实际开发中的应用,特别是与数据库交互的部分。 一、Java语言基础 1. 类与对象:Java基于面向对象的编程理念,所有程序都是由类和对象...
《深入体验Java_Web开发内幕—核心基础》是一本针对Java Web开发的深度解析书籍,旨在帮助读者全面理解和掌握Java Web开发的核心技术。这本书涵盖了从基础到高级的多个主题,旨在提供一个完整的Java Web开发学习路径...
例如,Junit库用于单元测试,断言和测试驱动开发;Apache Commons库提供了大量实用工具类,简化了开发工作。 总之,“Java基础开发技巧”涵盖了从设计模式到编程实践的广泛知识,通过深入学习和实践,开发者可以...
1. **测试驱动开发(TDD)** - TDD是一种软件开发实践,开发者首先编写测试,然后编写实现代码,以使测试通过。这有助于确保代码一开始就满足需求,并鼓励编写高质量的代码。 2. **JUnit框架基础** - `@Test`注解:...