`
neu_gefei
  • 浏览: 6399 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

TDD 第一章 使用入门(四)

阅读更多
A Simple Test
[size=large]
    为了实现保存学生信息的最初需求,我们先建立一个表现测试用例的类。首先,建立一个目录或文件夹来放这个类。接下来新建一个文件StudentTest.java在这个目录中。在接下来的时间里你会在这个目录下进行保存,编译,执行等一步步操作。在你的编辑器中输入如下的代码:
  
 public class StudentTest extends junit.framework.TestCase {
}

    以StudentTest.java为名保存这个文件。
    上面的两行代码定义了一个名为StudentTest的类。在两个大括号之间的部分是对这个类的定义。
    你必须标明这个类是public的,这样做可以使Junit测试框架认出这个类。我将在今后的课程中深入讲解public,现在你只需要弄懂这个public关键字允许别的代码(包括Junit框架中的)与这段代码一起工作。
    代码段extends junit.framework.TestCase 声明StudentTest类是另一个类junit.framework.TestCase的子类,就是说这个类将拥有,或者说继承junit.framework.TestCase的所有特性和数据,作为子类的StudentTest类还可以添加自己特有的行为和属性。extends语句同时可以告诉Junit测试框架StudentTest类是一个包含了测试方法的测试类。
    1.2节中的图展示了这两个类的继承关系,在UML图中箭头的方向指明了继承关系的父子两方。
    Figure 1.2. StudentTest Inherits from junit.framework.TestCase
    你下一步需要做的是编译这个StudentTest类。在编译时你需要告诉编译器StudentTest类以及它的所有引用的位置。当然,目前只引用了junit.framework.TestCase,这个类在一个Jar包 (Java ARchive)里,这个包还包含了构成Junit测试框架的哪些类。
    我将在附加课程中深入讲述ClassPath的含义,现在你只需要知道如何告诉Java那个Jar包在哪里就可以了。
    在命令行中,你可以在编译的同时告诉Java那个Jar包的位置。
   
javac -classpath c:\junit3.8.1\junit.jar StudentTest.java

    你可以以相对目录和绝对目录两种方式告诉Java位置的信息,在上例中我用了绝对路径的方式。同时你还得确保那个StudentTest.java就在当前路径下。
    如果你省略了classpath就会报错,具体错误如下:
 
  StudentTest.java:1: package junit.framework does not exist
public class StudentTest extends junit.framework.TestCase {
                            ^
1 error

    一些IDE工具可以帮助你在项目属性的地方配置classpath的信息,你将可以更简便的做这些事情。
   
引用
To represent the initial need to capture student information, start by creating a class that will act as your test case. First, create a new directory or folder on your machine.[1] Then create a file named StudentTest.java in this directory. For the time being, you will save, compile, and execute code out of this single directory. Type the following code into your editor:

[1] The instructions in this lesson are geared toward command-line use of Java. If you are using an IDE, you will create a class named StudentTest in something called the "default package." If you are prompted for any package name, do not enter anything.
    The two lines of code in StudentTest.java define a class named StudentTest. Everything that comes between the opening and closing braces ({and }) is part of the definition of StudentTest.
    You must designate the class as public in order for the testing framework JUnit to recognize it. I will cover public in more depth later. For now, understand that the public keyword allows other code, including the code in the JUnit framework, to work with the code you write.

The code phrase extends junit.framework.TestCase declares StudentTest to be a subclass of another class named junit.framework.TestCase. This means that StudentTest will acquire, or inherit, all the capabilities (behavior) and data (attributes) from a class named junit.framework.TestCase. Student Test will also be able to add its own behavior and/or attributes. The extends clause also allows the JUnit user interface to recognize the StudentTest class as something that contains testing methods.

The UML class diagram in Figure 1.2 shows the inheritance relationship between StudentTest and junit.framework.TestCase. StudentTest is now dependent upon both junit.framework.TestCase and Student. Remember that the arrowhead distinguishes between the type of dependencya closed arrowhead indicates an inheritance relationship.
    Your next step is to compile the StudentTest class. In order to do so, you must tell Java where to find any other classes that StudentTest references. Currently this includes only the class junit.framework.TestCase. This class can be found in a packaged format known as a JAR (Java ARchive) file. The JAR file in which junit.framework.TestCase can be found also contains many other classes that comprise the JUnit framework.

I discuss JAR files in more depth in Additional Lesson III. For now, you only need to understand how to tell Java where to find the JUnit JAR file. You do so using the classpath.
    From the command line, you can specify the classpath at the same time that you compile the source file.

javac -classpath c:\junit3.8.1\junit.jar StudentTest.java



You must specify either the absolute or relative location of the file JUnit. jar;[2] you will find it in the directory where you installed JUnit. This example specifies the absolute location of JUnit.jar.

[2] An absolute location represents the explicit, complete path to a file, starting from the drive letter or root of your file system. A relative location contains a path to a file that is relative to your current location. Example: If StudentTest is in /usr/src/student and JUnit.jar is in /usr/src/JUnit3.8.1, you can specify the relative location as ../JUnit/3.8.1/JUnit.jar.

You should also ensure that you are in the same directory as StudentTest.java.

If you omit the classpath, the Java compiler will respond with an error message:

StudentTest.java:1: package junit.framework does not exist
public class StudentTest extends junit.framework.TestCase {
                            ^
1 error



Your IDE will allow you to specify the classpath somewhere in the current project's property settings. In Eclipse, for example, you specify the classpath in the Properties dialog for the project, under the section Java Build Path, and in the Libraries tab.




[/size]
  • 大小: 11.2 KB
分享到:
评论

相关推荐

    tdd_net_with_fitnesse.pdf

    - **第一章:入门**: - **介绍**:解释了谁应该阅读本书,为什么需要TDD以及FitNesse的作用。 - **安装FitNesse**:详细指导如何设置FitNesse环境,并进行简单的测试验证。 - **第二章:实战FitNesse和TDD**: -...

    C#测试驱动开发

    第7章 实现第一个用户情景 第8章 集成测试 第Ⅲ部分 TDD方案 第9章 Web上的TDD 第10章 测试WCF服务 第11章 测试WPF和Silvedight应用程序 第Ⅳ部分 需求和工具 第12章 应对缺陷和新的需求 第13章 有关优秀工具的争论 ...

    C#入门经典代码包含15章的代码

    2. **控制流与异常处理** (第15章): 这一章主要讲解if-else、switch、for、while等控制结构,以及如何使用try-catch来处理程序中的异常,确保程序的健壮性。 3. **数组与集合** (第16章): 数组是存储同类型数据的...

    从入门到精通C#程序设计ppt教程

    1. **第一章:C#简介** - C#的历史和发展背景 - C#的主要特点和用途 - .NET Framework和.NET Core的区别 - 安装Visual Studio IDE 2. **第二章:C#语法基础** - 变量、数据类型和常量 - 运算符和表达式 - ...

    Test Driven Development_A J2EE Example

    1. **第一章:测试驱动开发简介** - 介绍测试驱动开发的核心理念。 - 讨论TDD的优势及其对软件开发流程的影响。 - 概述如何将TDD融入现有的开发环境。 2. **第二章:入门** - 介绍TDD所需的工具和环境设置。 -...

    最全VS2010初级教程学习手册

    写在前面 第一章 关于Visual Studio、VC和C++的那些事 1 第二章 安装、配置和首次使用VS2010 2 安装 2 配置 10 HelloWorld. 18 VS2010正式到手,说说几点试用体会 29 VS2010 中使用main函数作为C++的入口函数本篇...

    Python算法从入门到实践

    1. **Python基础知识**:学习Python的基础语法是入门的第一步,包括变量、数据类型(如整型、浮点型、字符串、列表、元组、字典等)、流程控制(如if-else、for、while循环)、函数定义和调用、模块导入以及异常处理...

    Apress.Applied.WPF.4.in.Context.2011

    书中第一章介绍了WPF的基本概念和XAML标记语言,帮助读者快速入门。 ### 创建视图与控制元素 在第四章和第五章中,作者详细讲解了如何使用WPF创建视图,并向这些视图添加控件。通过实际示例,读者可以学习到如何...

    D3.js数据可视化实战手册.epub

    这一章涵盖了D3库中过渡以及动画的相关概念。 第7章,图形之美,介绍了SVG相关的概念。SVG是一个广泛用于数字可视化程序的W3C(World Wide Web Consortium)标准。 第8章,图表美化,探索了数据可视化中最为人知的...

    clojure in action

    这一章通过一系列示例程序让读者快速了解Clojure的核心特性,如数据结构操作、函数定义、宏使用等。 - **第3章:Clojure的基础构建块** 在这一章中,作者深入讲解了Clojure中的基本类型、集合数据结构以及序列...

    测试驱动开发with Junit(三)

    首先,我们来看“第一章&第二章”的内容。这部分可能涵盖了TDD的基本理念和JUnit的入门知识。TDD的核心思想是“红-绿-重构”循环,即先编写失败的测试(红),然后编写最小量的代码使测试通过(绿),最后对代码进行...

    Wiely - Agile Database Agile Database Techniques

    ##### 第一部分:奠定基础 - **第1章:敏捷数据方法**:介绍了敏捷数据方法的基本概念,包括其背景、原则以及与传统数据库开发方法的区别。 - **第2章:从业务场景到数据库——现实世界中的UML**:阐述了如何利用...

    C#语言与数据库基础15章完整题目

    1. **C#基础**:第一章通常会介绍C#语言的基本概念,包括变量、数据类型、运算符、流程控制(如条件语句和循环)以及函数的使用。此外,还会涉及面向对象编程的基础,如类、对象、继承、多态等概念。 2. **C#高级...

    mvc3高级编程英文版

    首先介绍*** MVC的基本概念,然后解释它如何延续之前的版本,并帮助读者在确保软件环境正确配置后开始创建第一个*** MVC 3应用程序。 第2章:控制器 控制器是处理用户请求并返回响应的中间件。本章讲解控制器和操作...

    MVC3_67_第1章第1次_MVC简介

    - 创建第一个MVC应用的步骤 - 控制器的生命周期和路由配置 - 视图的创建与渲染,包括Razor语法的使用 - 模型绑定和验证 - HTTP请求和响应的工作流程 通过深入学习这些基础知识,你可以逐步掌握如何利用ASP.NET MVC ...

    ASP.NET-Professional ASP.NET MVC 4 (2012)

    本书的第一章引导读者进入ASP.NET MVC的世界,从环境搭建到第一个项目的创建,逐步介绍如何配置开发环境,包括选择合适的IDE(如Visual Studio)以及安装必要的工具和库。这一章节是新手快速上手的指南,同时为后续...

Global site tag (gtag.js) - Google Analytics