Vi,Java,Ant 和 Junit 的自学报告

vi/vim

vi/vim 简介

vi 是 Visual Interface 的缩写,即可视化接口,是在 Linux 下的一个文本编辑器,所有的 Unix Like 系统都会内建 vi 文本编辑器。

vim 是 vi iMprove 的缩写,即 vi 的增强版。vim 是从 vi 发展出来的一个文本编辑器 ,会给使用的语言加入高亮,帮助使用者判断语法的正确性。因其代码补完、编译及错误跳转等方便编程的功能特别丰富,vim 在程序员中被广泛使用,和 Emacs 并列成为 Unix Like 系统用户最喜欢的编辑器。

vi/vim 的使用

vi 分为三个模式:命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。这三种模式的作用分别是:

命令模式

用户刚刚启动 vi/vim,就进入了命令模式。此状态下敲击键盘动作会被识别为命令,而非字符。常用的命令及其作用如下:

命令作用
i切换到输入模式,以输入字符
x删除当前光标所在处的字符
:切换到底线命令模式,以在最底一行输入命令

若想要编辑文本,启动 vi/vim,进入命令模式,按下 i,切换到输入模式。

输入模式

在命令模式下按下 i 进入输入模式。常用的命令及其作用如下:

命令作用
字符按键以及 Shift 组合输入字符
ENTER回车键,换行
BACKSPACE退格键,删除光标前一个字符
DEL删除键,删除光标后一个字符
方向键在文本中移动光标
HOME/END移动光标到行首/行尾
Page Up/Page Down上/下翻页
Insert切换光标为输入/替换模式,光标将编程竖线/下划线
ESC退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下 : 进入底线命令模式。底线命令模式可以输入单个或多个字符的命令,常用的命令及其作用如下:

命令作用
q退出程序
w保存文件
q!强制退出
wq保存并退出

按 ESC 键可退出底线命令模式。

Java

在 C 语言和 C++ 的基础上学习 Java 相对容易一点,Java 的数据类型、程序控制语句、面向对象的思想、封装、继承、多态等都与 C 语言和 C++ 语言类似。本次实训主要是 Java 的初步入门以及其图形化界面 GUI 的使用,主要使用 Javax.swing 这个 GUI 库。

Java GUI 的使用

Swing 是一个为 Java 设计的 GUI 工具包,是 Java 基础类的一部分,其中包括了 GUI 的组件 JFrame、JPanel、JLabel 等。

组件作用
JFrameJava 的 GUI 程序的基本思路是以 JFrame 为基础,它是屏幕上 window 的对象,能够最大化、最小化、关闭。
JPanelJava 的 GUI 工具包 swing 中的面板容器类,可以进行嵌套,功能是对窗体中具有相同逻辑功能的组件进行组合,是一种轻量级容器,可以加入到 JFrame窗体中。
JLabelJLabel 对象可以显示文本、图像或同时显示二者。可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,标签在其显示区内垂直居中对齐。默认情况下,只显示文本的标签是开始边对齐;而只显示图像的标签则水平居中对齐。
JTextField一个轻量级组件,它允许编辑单行文本。
JButtonJButton 类的实例。用于创建按钮类似实例中的 “Login”。

Ant

Ant 简介

Ant 是一个 Apache 基金会下的跨平台的基于 Java 语言开发的构件工具,是最完整的基于 Java 语言开发的构建和部署工具。Ant 脚本是用 XML 来完成的,容易维护和书写,结构较清晰。

Ant 构建文件

Ant 的构建文件默认为 build.xml,放在项目顶层目录中。

基本架构

<?xml version="1.0"?>
    <project name="HelloWorld">
        <target name="sayHello">
            <echo message="Hello,world!"/>
    </target>
</project>

页面元素

  • < project > 元素:Ant 构建文件的根元素,Ant 构建文件至少应该包含一个 project 元素,否则会发生错误。构建文件的项目元素有 3 个属性:
属性描述
项目名(name)表示项目的名称。(可选)
默认(default)表示构建脚本默认运行的目标,即制定默认的 target。一个项目(project)可以包含多个目标(target)。(必须)
基准目录(basedir)表示当该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。(可选)
  • < target > 元素:Ant 的基本执行单元,它可以包含一个或多个具体的 task elements。多个 targets 可以存在相互依赖关系。构建文件的目标元素有一下属性:
属性描述
目标名(name)表示目标的名称。(必须)
依赖(depends)用于描述 target 之间的依赖关系,若与多个 target 存在依赖关系时,需要以“,”间隔。Ant 会依照 depends 属性中 target 出现的顺序依次执行每个 target。被依赖的 target 会先执行。(可选)
描述(description)关于 target 功能的简单描述。(可选)
如果(if)用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。(可选)
除非(unless)该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。(可选)
  • < property > 元素:该元素可看作参量或者参数的定义,project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。

Ant 任务

  • delete 任务:对文件或目录进行删除。
  • mkdir 任务:创建目录。
  • javac 任务:实现编译 Java 程序的功能。
  • java 任务:实现运行 Java 程序的功能。
  • jar 任务:生成 jar 文件。

Ant 的使用

编写 build.xml 文件放在项目顶层目录中。

build.xml

<?xml version="1.0" encoding = "UTF-8" ?>
<project name="HelloWorld" default="run" basedir=".">

    <path id="classpath.test">
    	<pathelement location="../../../opt/resources/junit-4.9.jar"/>
    	<pathelement location="src" />
    	<pathelement location="build/classes" />
    </path>

	<target name="clean">
		<delete dir="build"/>
	</target>

	<target name="compile" depends="clean">
		<mkdir dir="build/classes"/>
		<javac srcdir="src" destdir="build/classes">
			<classpath refid="classpath.test"/>
		</javac>
	</target>

	<target name="test" depends="compile">
		<junit>
			<classpath refid="classpath.test"/>
			<formatter type="brief" usefile="false" /> 
			<test name="HelloWorldTest" />
		</junit>
	</target>

	<target name="run" depends="test">
		<java classname="HelloWorld">
			<classpath>
				<pathelement path="build/classes" />
			</classpath>
		</java>
	</target>
</project>

在终端输入 ant,测试结果如图:
在这里插入图片描述

Junit

Junit 简介

Junit 是一个 Java 语言的单元测试框架,用于编写和运行测试,提供注释来识别测试方法,提供断言来测试预期结果,便于迅速编写代码并且提高质量。

单元测试的目的在于测试当前所写的代码是否是正确的,例如输入一组数据,会输出期望的数据;输入错误的数据,会产生错误异常等。

在单元测试中,需要保证被测系统是独立的,即当被测系统通过测试时,那么它在任何环境下都是能够正常工作的。编写单元测试时,仅仅需要关注单个类就可以了。具体用法如下:

  • @Test(expected = Exception.class) 表示预期会抛出 Exception.class 的异常。
  • @Ignore 含义是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示有几个测试被忽略,而不是失败。一旦完成了相应函数,只需要把@Ignore注解删去,就可以进行正常的测试。
  • @Test(timeout=100) 表示预期方法执行不会超过 100 毫秒,控制死循环。
  • Before 表示该方法在每一个测试方法之前运行,可以使用该方法进行初始化之类的操作。
  • @After 表示该方法在每一个测试方法之后运行,可以使用该方法进行释放资源,回收内存之类的操作。
  • @BeforeClass 表示该方法只执行一次,并且在所有方法之前执行。一般可以使用该方法进行数据库连接操作,注意该注解运用在静态方法。
  • @AfterClass 表示该方法只执行一次,并且在所有方法之后执行。一般可以使用该方法进行数据库连接关闭操作,注意该注解运用在静态方法。

Junit 的使用

新建两个文件,一个写有基本类 HelloWorld.java,另一个是测试类 HelloWorldTest.java,把这两个文件放在同一个目录下。

基本类 HelloWorld.java

import java.util.*;

public class HelloWorld{
    public static void main(String[] args){
        hello();
    }

    public static void hello(){
    	System.out.println("Hello world!");
    }
}

测试类 HelloWorldTest.java

import static org.junit.Assert.*;
import org.junit.Test;

public class HelloWorldTest {
	//新建待测试类的实体
	public HelloWorld helloworld = new HelloWorld();
	//待测试类的函数hello()的测试
	@Test
	public void testHello(){
		helloworld.hello();
	}
}

在终端输入以下命令进行测试:

javac -cp .:junit-4.12.jar HelloWorldTest.java
java -cp .:junit-4.12.jar:hamcrest-core-1.3.jar org.junit.runner.JUnitCore HelloWorldTest

测试结果如图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值