`

测试驱动开发 java基础

    博客分类:
  • 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());
	*/
	}	
}

 

 

  • 大小: 65.2 KB
分享到:
评论

相关推荐

    java 测试驱动开发 by Example

    Java测试驱动开发(TDD,Test-Driven Development)是一种软件开发方法论,它强调在编写实际功能代码之前先编写测试代码。TDD的核心理念是“先写测试,再写代码”,这种模式有助于确保代码的质量,减少错误,并促进...

    测试驱动开发的艺术 epub电子书

    全书内容循序渐进,先侧重基础内容,讨论测试驱动开发和验收,然后进入动手实践部分,逐一讲解如何对各种技术应用TDD,最后介绍基于验收测试驱动的测试先行的方式构建完整的系统。本书面向各个层次的Java程序员。...

    TDD 测试驱动开发 文档 详细

    标题中的“TDD测试驱动开发文档详细”表明这是一个关于TDD的详细资料集合,可能涵盖了TDD的理论基础、实践步骤、工具使用等方面。描述中提到的“java TDD测试开发流程”,意味着这些文档专注于Java语言的TDD实践,...

    测试驱动开发(TDD)入门讲解及代码实例

    其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解、掌握...

    Agile Java中文版 测试驱动开发的编程技术

    ### Agile Java中文版 测试驱动开发的编程技术 #### 一、概述 《Agile Java中文版 测试驱动开发的编程技术》是一本由美国作者Jeff Langr所著,涂波与孙勇翻译的重要著作。该书于2006年由电子工业出版社出版,全书...

    代码大全2、测试驱动开发.zip

    《代码大全2》和《测试驱动开发》是两本在软件工程领域极具影响力的书籍,它们分别探讨了编程实践和测试策略的重要方面。 《代码大全2》由Steve McConnell撰写,是编程界的经典之作,主要关注如何编写高质量的代码...

    测试驱动的Java开发(Test-Driven Java Development)-2015年英文原版,0积分

    本书深入探讨了如何将测试驱动开发(TDD)原则应用于Java应用程序的开发过程中,为读者提供了全面的指导和支持。 #### TDD的核心概念 **测试驱动开发(Test-Driven Development)**是一种软件开发方法论,它强调在编写...

    中文版:java测试驱动开发的编程技术

    Java测试驱动开发(Test-Driven Development,TDD)是一种软件开发方法,它强调在编写实际功能代码之前,先编写测试代码。这种做法有助于确保代码的质量,降低错误率,并且能够及时发现和修复问题。以下是对Java TDD...

    测试驱动开发的艺术

    全书内容循序渐进,先侧重基础内容,讨论测试驱动开发和验收,然后进入动手实践部分,逐一讲解如何对各种技术应用TDD,最后介绍基于验收测试驱动的测试先行的方式构建完整的系统。本书面向各个层次的Java程序员。...

    agile java 驱动测试开发

    《敏捷Java驱动测试开发》是针对Java开发人员和团队的一份重要参考资料,它深入探讨了如何在敏捷开发环境中高效地进行测试驱动开发(TDD)。本文将围绕这一主题,详细阐述敏捷开发理念、Java测试框架的使用以及TDD在...

    测试驱动开发的艺术Test.Driven.TDD.and.Acceptance.TDD.for.Java.Developers

    《测试驱动开发的艺术》一书深入探讨了TDD在Java开发中的实践和技巧,为开发者提供了宝贵的指导。 TDD的核心流程可以概括为“红-绿-重构”三步: 1. **红**:首先,开发者编写一个最小化的、不能通过的测试用例。...

    产品等级测试驱动开发和最新动态1

    产品等级测试驱动开发是软件开发过程中的一个关键实践,它强调在编写实际代码之前先创建测试用例。这种做法能够确保代码的质量,并且在开发早期就发现潜在的问题。在【标题】"产品等级测试驱动开发和最新动态1"中,...

    测试驱动开发with Junit(三)

    测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,它要求开发者在编写实际功能代码之前先编写测试代码。在这个过程中,Junit是一个关键的工具,它是一个Java编程语言的单元测试框架,广泛用于...

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

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

    java基础知识应用

    在“java基础知识应用”这个主题中,我们主要探讨的是Java语言的基础概念及其在实际开发中的应用,特别是与数据库交互的部分。 一、Java语言基础 1. 类与对象:Java基于面向对象的编程理念,所有程序都是由类和对象...

    深入体验Java_Web开发内幕—核心基础 完整版 pdf

    《深入体验Java_Web开发内幕—核心基础》是一本针对Java Web开发的深度解析书籍,旨在帮助读者全面理解和掌握Java Web开发的核心技术。这本书涵盖了从基础到高级的多个主题,旨在提供一个完整的Java Web开发学习路径...

    java基础开发技巧

    例如,Junit库用于单元测试,断言和测试驱动开发;Apache Commons库提供了大量实用工具类,简化了开发工作。 总之,“Java基础开发技巧”涵盖了从设计模式到编程实践的广泛知识,通过深入学习和实践,开发者可以...

    单元测试 单元测试 java

    1. **测试驱动开发(TDD)** - TDD是一种软件开发实践,开发者首先编写测试,然后编写实现代码,以使测试通过。这有助于确保代码一开始就满足需求,并鼓励编写高质量的代码。 2. **JUnit框架基础** - `@Test`注解:...

Global site tag (gtag.js) - Google Analytics