Xungerrrr's Blog

Vi, Java, Ant 和 JUnit 的学习报告

2018 中级实训 阶段一学习报告

Word count: 1.5kReading time: 5 min
2018/04/15 13 Share

Vi 编辑器

Vi 编辑器是 Linux 和 Unix 系统中的标准文本编辑器,功能强大,使用方便。在这次实训中,我掌握了 Vi 编辑器的一些基本用法。

进入 Vi 的方法

在系统提示符后输入 vi filename 即可进入 vi 编辑器编辑对应的文件。

Vi 的基本概念和使用方法

在 Vi 编辑器中,有三种模式,分别是命令模式、插入模式和底行模式。为了简化,一般将底行模式归入命令模式中。

  • 命令模式 (Command Mode)

    这是进入 Vi 的默认模式。在命令模式中,可以控制光标移动,对字符和段落进行删除、复制和移动等操作。在命令模式中按 “i”, “a” 或 “o” 键可以进入插入模式,按 “:” 键进入底行模式。

  • 插入模式 (Insert Mode)

    在插入模式中,可以输入文字,编辑文本内容。在插入模式中按 Esc 键可以回到命令模式。

  • 底行模式 (Last Line Mode)

    在底行模式中,可以保存文件 (w),退出 Vi (q),也可以对编辑界面做基本的设置和操作,如列出行号 (set nu)、跳到某一行和查找字符。

Java

Java 是一种完全面向对象的编程语言,与 C++ 语言有许多相近之处。相比于 C++,Java 移除了一些容易出错的特征,例如指针和多重继承,而提高了垃圾自动回收的能力。下面是在自学过程中学到的一些 Java 与 C++ 的不同之处。

  • 与 C++ 一样,Java 程序同样以 main 函数作为执行入口,但 Java 中的 main 函数需要写在程序的一个主类中,作为类的一个静态方法。

  • 除了 class (类),Java 还提供 interface (接口) 语法,方便程序员将接口从类的具体定义中剥离出来,成为独立的接口概念。在接口中,不需要定义方法的主体和可见性,因为接口需要由具体的类来实现,而且根据接口的定义,接口的可见性都为 public。

  • 类的继承要使用 extends 语句,接口的实现要使用 implements 语句。

  • Java 中有包 (package) 的概念,可以更好地组织和使用项目中的 Java 程序,也提高了程序的可移植性。包的名字与程序的路径相对应。在程序的开始用 package 建立包,用 import 调用包。

  • C++ 中类可以多重继承,而 Java 中只有接口能够多重继承。

Ant

Ant 是一个跨平台的构建工具,它可以实现项目的自动构建和部署等功能,通常用来构建 Java 程序。

Ant 的构建文件是 xml 文件,非常便于阅读和组织。

Ant 的基础元素

  • project

    project 元素是 Ant 构建文件的根元素。project 元素中包含 target 元素。project 元素有许多属性,例如 name 属性指定 project 的名称,default 属性指定默认的 target,basedir 属性指定基路径的位置。

  • target

    target 元素是 Ant 的基本执行单元,可以包含一个或多个任务。target 之间可以有依赖关系。target 元素也有不同的属性,如 name 属性指定 target 的名称,depends 属性描述 target 之间的依赖关系,if 属性验证指定的属性是否存在,description 属性用来描述 target 的功能。

  • property

    property 元素是参数的定义,可以用作其他元素的属性。通过${name}可以获取 property 元素的值。

Ant 的常用功能

利用 Ant 可以自动完成许多基本功能,如复制、删除、创建和移动目录、文件。利用 Ant 也可以使用 javac、java 和 jar 等命令自动化构建和部署 Java 项目。Ant 与 JUnit 结合使用,可以十分方便地对程序进行测试。

Ant 构建文件示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0"?>
<project name="Calculator" default="jar">
<target name="clean">
<delete dir="bin"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="bin/classes"/>
<javac srcdir="src" destdir="bin/classes" includeAntRuntime="false"/>
</target>
<target name="run" depends="compile">
<java classname="Calculator" fork="true">
<classpath>
<pathelement path="bin/classes"/>
</classpath>
</java>
</target>
<target name="jar" depends="run">
<jar destfile="calculator.jar" basedir="bin/classes">
<manifest>
<attribute name="Main-class" value="Calculator"/>
</manifest>
</jar>
</target>
</project>

执行命令 ant,可以自动完成 Calculator 程序的清理、编译、运行和打包。

JUnit

Junit 是一款功能强大的单元测试工具,它简化了开发人员执行单元测试的难度,而 JUnit 4 中使用了 Java 5 的注解 (Annotation),使测试用例的编写变得更加简单。

JUnit 4 使用的 Annotation

  • @Before

    使用这个注解的方法只能有一个,并且要在每个测试方法执行之前都执行一次。

  • @After

    使用这个注解的方法只能有一个,并且要在每个测试方法执行之后都执行一次。

  • @Test

    使用这个注解的方法为测试方法。

  • @Test(expected=*.class)

    expected 属性的值是一个异常类型,使用这个注解可以测试程序运行中的错误。

  • @Test(timeout=xxx)

    这个注解可以给测试设定最大执行时间。只有在规定时间内执行完成才算成功。

  • @Ignore

    使用这个注解的方法会被忽略。可以应用于暂时不用或者是没有实现的测试方法。

使用 Junit 测试 HelloWorld

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---HelloWorld 类---
import java.util.*;

public class HelloWorld {
public static void main(String[] args) {
System.out.println(str);
}

public void hello() {
str = "Hello Junit!";
}

public String getStr() {
return str;
}

private static String str = "Hello World!";
}
1
2
3
4
5
6
7
8
9
10
11
12
---HelloWorldTest 类---
import org.junit.Test;
import static org.junit.Assert.*;

public class HelloWorldTest {
public HelloWorld helloworld = new HelloWorld();
@Test
public void testHelloWorld() {
helloworld.hello();
assertEquals("Hello Junit!", helloworld.getStr());
}
}

编译并运行测试程序,可以对 HelloWorld 类进行测试。

CATALOG
  1. 1. Vi 编辑器
  2. 2. Java
  3. 3. Ant
  4. 4. JUnit