本文主要介绍Java语言的集成开发环境(IDE)“eclipse”开发工具的编程、调试与测试用法,同时了解相关的知识点。
声明:本系列博文为"爱校码.中国"原创博文,版权所有,未经授权,不得转载或抄袭,若发现将依法追责。
学习者利用像记事本这样的文本编辑器进行Java程序源代码的编写,再通过JDK在命令行编译和运行。当然,对于简单的程序这是没有问题的。但对于复杂的程序,就会暴露出程序调试困难等一些问题。此时,需要一个集成开发环境。
Eclipse是Java程序集成开发环境的首选,从www.eclipse.org
网站获取与本地计算机操作系统对应的eclipse
版本,将其解压到本地计算机的一个确定好的目录下,在JDK
安装配置正确的情况下,可以运行eclipse
,在其之上可以进行Java源码
的编辑、编译、调试与测试。
开源项目,顾名思义,就是开放式源代码的软件项目。开放源代码是一种源代码可以任意获取的计算机软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改、增进提高该软件的质量。开源协议通常符合开放源代码的定义的要求。开源软件常被公开或合作开发。开源软件通常被发布到公有领域。
开放源代码并不仅仅指开放源代码软件,它同时也是一种软件开发模式的名称。使用开放源代码开发模式的软件代表就包括Linux操作系统。开放源代码开发模式的名字及其特点最早是由美国电脑黑客埃里克·斯蒂芬·雷蒙在他的著作《大教堂和市集》(The Cathedral and the Bazaar)等一系列论文集中提出并探讨的。
开放源代码软件与自由软件是两个不同的概念,只要符合开源软件定义的软件就能被称为开放源代码软件(开源软件)。自由软件是一个比开源软件更严格的概念,因此所有自由软件都是开放源代码的,但不是所有的开源软件都能被称为“自由”。但在现实上,绝大多数开源软件也都符合自由软件的定义。例如,遵守GPL
(General Public License,GNU通用公共许可协议,“GNU”是“GNU's Not Unix!”的首字母递归缩写。)和BSD
(Berkeley Software Distribution)许可协议的软件都是开放源代码的并且是自由的。
开放源代码软件运动是一个主要由软件工程师及其它电脑用户参与的声势浩大的运动。它是自由软件运动的一个分支,但两者的差别并不明显。一般而言,自由软件运动是基于政治及哲学思想(也称为黑客文化)的理想主义运动,而开放源代码软件运动则主要注重程序本身的质量提升。
eclipse是开源项目
,由IBM
于2001 年 11 月向开源社区捐献的开发工具,用于Java平台开发的集成开发环境IDE(Integrated Development Environment), 自此 eclipse 在开发者社区以开源开发模式得到飞速发展。
2001年11月7日 ,eclipse发布1.0版本;2002年6月27日eclipse发布2.0版本,eclipse2.0时代经历了2.0和2.1两个大的版本,其中2.0在发布之后又推出了2.0.1和2.0.2,而之后于2003年3月27日推出了 2.1版本,也接着又推出了2.1.1,2.1.2和2.1.3三个后续修订版本; 2004年6月25日发布3.0版本,进入3.0时代的eclipse采用了OSGi运行时架构。同年eclipse基金会成立,标志着eclipse进入一个新的时代。eclipse3.0后有两个小的修订版本3.0.1和3.0.2;2005年6月27日,eclipse 3.1版本发布,在此强调3.1版本,是因为从这个版本开始,形成了一个以木星卫星名称相关的系列。1610年,著名的科学家伽利略通过对木卫1到木卫4的观察,提出了反驳地心说的证据,木卫1到木卫4因此被称之为伽利略四大卫星。这四大卫星被分别赋予了四个神话传说中人物的名字,它们分别是:
从此之后,eclipse的版本发布就与这些天体神话名称结合,目前已知的版本代号如下:
eclipse是一种通用的工具平台,其集成开发环境IDE针对特殊的应用具有开放性和扩展性。它所提供的丰富开发环境,允许开发人员创建有效的工具,无缝集成到eclipse平台。eclipse是一种通用的工具平台,其集成开发环境IDE针对特殊的应用具有开放性和扩展性。它所提供的丰富开发环境,允许开发人员创建有效的工具,无缝集成到eclipse平台。
eclipse平台本身由多个子系统构成,而这些子系统可以作为eclipse的插件而实现,它们构建在一个小的运行引擎之上。下图描述了一个简化视图。
每个平台窗口包含一个或多个透视图,而透视图包含相应的外观和编辑器,以及特定的菜单和工具条。桌面上可以同时存在多个平台窗口。
(1) 访问www.eclipse.org
网站,选择[Downloads]
导航链接,在链接到的“https://www.eclipse.org/downloads/
”的页面中,选择eclipse
版本,由于最新的eclipse版本
不支持 Java 8
,而Eclipse IDE 2020-06
是最后默认支持Java 8
的版本了,后面的版本开始要求使用Java 11
才能启动。本子任务以Eclipse IDE 2020-06 for Windows为例。
(2) 点击【Download Packages
】,进入【Eclipse Packages
】页面,点击【MORE DOWNLOADS
】下的Older Versions
,进入Eclipse Packaging Project (EPP) Releases
页面,选择2020-06
链接进入Eclipse IDE 2020-06 R Packages
页面,选择Eclipse IDE for Java Developers
的Windows x86_64
下载。可以点击此链接下载eclipse-java-2020-06-R-win32-x86_64.zip
文件存储到本地目录中,文件名可能由于eclipse的版本不同而不同。
(1) 在安装eclipse之前,需要完成JDK的安装与配置,这是因为eclipse的运行基于JRE
。eclipse的安装很简单,在windows操作系统下,使用zip解压软件将eclipse-java-2020-06-R-win32-x86_64.zip
文件解压到一个硬盘驱动器的目录下,例如d:\eclipse
目录,目录文件结构如图所示:
(2) eclipse
的运行文件eclipse.exe
在d:\eclipse
目录下,直接双击它或将其以快捷方式加入到桌面,运行后的出现启动界面。然后出现工作目录设置对话框,在此界面下,点击[Launch]按钮,eclipse进入Welcome
界面,这时可以进行工作了。
I 设置特定项内容:
在进行Java编程之前,需要在eclipse内验证JRE的安装和CLASSPATH环境变量,同时为了处理汉字,需要设置字符编码。通过以下步骤进行:
UTF-8
,如图所示。而且,workspace
的Build
选项中,确认Build automatically选择项已被选择,如图所示。意味着开发平台将自动编译与构建。
⑷
中 所示。然后再选择General > Content Types,在右边特定页的Content types栏,选择Text项的Java Source File子项,设置Default encoding为UTF-8。如图所示。II 创建项目:
当完成了以上的设置和验证,现在就可以创建一个新的Java项目,那就开始吧:
⑴ 在eclipse 内,选择菜单项File > New > Java Project,打开创建新项目向导;
⑵ 选择Java Project,开始New Java Project 向导,在Project name域,输入JPro
作为项目名称。在Project layout栏,选择Create separate folders for sources and class files 项,其它栏按照默认设置。然后单击Next按钮;
III 编辑程序:
现在可以创建一个新的Java类:
cn.ischoolcode.japp
;WelcomeApp
;在上图所示的编辑器(Editor)中,从第4行开始,加入Java类WelcomeApp
的其它行,其中包含了一个main()方法,这个main方法同时出现在轮廓(Outline)视图和包资源管理器(Package Explorer)视图中,如图所示。最后,在工具条上按save按钮或者选择菜单File > Save保存文件。在保存Java源文件的同时,自动构建并编译程序
。
IV 运行程序:
到此为止,现在可以运行JPro项目了,那么如何在Eclipse平台中运行Java应用程序呢?
以上结果表明,Java程序是正常的,而且没有错误。
V 调试程序:
如果遇到有错误的情况,通过eclipse如何调试Java程序?
在此,特意将编辑器(Editor)中的第5行代码[System.out.println("欢迎访问Java应用程序");
]后的分号去掉,单击Save按钮保存, JPro
项目被重建,而且出现的问题将以几种方式显示:
当软件代码编程完成后,你的软件代码有无问题,现在还不好判断,那么用什么方法呢?需要采用测试的理论和方法,通过测试,修订所有可能的问题(bug),确保软件的质量。
对于测试有不同的类型,通常包括单元测试、客户测试和集成测试。单元测试也称为白盒测试,由程序员进行,检测源代码模块中的类的方法的正确性,如果需要访问外部资源,还需要编写模拟对象;客户测试也称为黑盒测试,由客户进行,验证系统的功能和性能;而集成测试介于单元测试和用户测试之间,它是单元测试和用户测试的桥梁,综合测试应用程序系统的交互性。本节重点介绍单元测试的框架JUnit,关于其它两种测试的内容可参阅其它资料。
在eclipse平台上,采用JUnit测试框架来编写用例和组织测试。如何编写测试代码?最简单方法是将编写的代码作为调试器的表达式,你可以在没有编译的情况下改变调试表达式,等到判别运行的结果和所写的是否一致;也可以将测试表达式作为标准输出流的概念将在后续情景中介绍。这两种形式的测试很有限,因为它们需要人工的判断并分析它们的结果。它们也同样不好组织运行,每一次只能运行一个调试表达式,并且,一个具有很多打印输出语句的程序将引起频繁的屏幕滚动。
JUnit测试不需要人工判断来中断,而且可以简单的在同一时间运行多次。
测试需要基于已知对象集的情况运行,这个对象集称作测试工具夹。有时当你编写一个测试用例时,经常发现花费很多时间编写建立工具夹的代码,而不是编写真正测试值的代码。针对一定的范围,关注所写代码的结构体使得编写工具夹代码更容易。然而,大量操作来自共享的工具夹代码,经常使用相同的工具夹为几个不同的测试服务。对于每一种情况,只是简单的传递不同的信息或参数给工具夹,而检验不同的测试结果。
在JUnit中,对测试目标进行测试的方法与过程的集合,称为测试用例(TestCase),而容纳多个测试用例的集合,称为测试组(TestSuite)。在JUnit的TestCase类中包含setUp()方法和tearDown()方法,setUp()方法集中初始化测试所需的所有变量和实例,并且在依次调用测试类中的每个测试方法之前再次执行setUp()方法;tearDown()方法则是在每个测试方法之后,释放测试程序方法中引用的变量和实例。在编写测试用例时,只需要继承TestCase类,就可以使用相同的方法。以下说明对WelcomeApp类的测试:
清单 1-1:
package cn.ischoolcode.japp;
import static org.junit.jupiter.api.Assertions.*;
import java.io.*;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class WelcomeAppTest {
WelcomeApp welcomeapp;
@BeforeEach
void setUp() throws Exception {
welcomeapp = new WelcomeApp();
}
@AfterEach
void tearDown() throws Exception {
}
@Test
void testMain() {
/** 准备捕获输出 */
PrintStream originalOut = System.out;
OutputStream os = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(os);
System.setOut(ps);
/** 执行测试 */
String[] args = {};
String separator = System.getProperty("line.separator");
welcomeapp.main(args);
assertEquals("欢迎访问Java应用程序" + separator, os.toString());
/** 恢复正常输出 */
System.setOut(originalOut);
}
}
完成的测试类的代码包括三个方法,setUp()
方法通过注解@BeforeEach
或调用其父类的setUp()
方法建立测试环境,也可以进行其它的初始化工作,例如建立被测试类的实例等;tearDown()
方法通过注解@AfterEach
或调用其父类的tearDown()
方法用于清理资源,释放打开的文件等;testMain()
方法是以test
开头的测试方法。如果有多个以test开头的测试方法,JUnit
会依次执行testXxx()
方法,这些方法通过注解@Test
可以被自动找到并被测试。JUnit
将创建多个测试类的实例,每次运行一个testXxx()
方法,setUp()
和tearDown()
方法会在testXxx()
方法前后被调用。
这里说明的测试类只是一个框架,阐述的主要是步骤,具体测试还需要对测试方法添加相应的代码,例如JUnit中的Assert类的一系列静态声明方法,用于期望值和实际值比较是否正确,用于判断测试方法的成功与失败。这将在后续情景中逐渐介绍。
绿色
表示测试通过。但只要有1个测试未通过,就会显示红色
并列出未通过测试的方法。
博文最后更新时间: