Vi, Java, Ant和Junit的自学报告(studyreport.md)
Vi
Vi:打开/新建文件, 进入Vi界面:$ vi file
如果该文件存在,则打开文件;否则,新建一个名为file的文件.
e.g. $ vi HelloWorld.java
,$ vi main.cpp
Vi: 命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
命令模式:初次进入vi界面,就是命令模式。此模式下,任何输入字符都会被识别为命令。常见命令:
i
切换到输入模式,以输入字符。x
删除当前光标所在处的字符。:
切换到底线命令模式,以在最底一行输入命令。
输入模式:从命令模式输入"i"字符,到达输入模式。此模式下的输入跟正常的文本输入基本一致。注意以下两点:
1. 按insert键,会切换光标为输入/替换模式,光标将变成竖线/下划线
2. 按esc键,会返回到命令模式。
底线命令模式:从命令模式输入":"字符,到达底线命令模式。该模式下,常用的命令有:
1. w
保存
2. q
退出
3. wq
保存并退出
【注意:-r 可以强制执行命令】
Java
Java: 从HelloWorld.java开始
下面是HelloWorld.java的内容,程序运行输出HelloWorld
// 声明公共类HelloWorld,公共类的名字需要与文件名保持一致
public class HelloWorld {
// main函数是程序入口,类似于c++的main函数
public static void main(String[] args) { // 约定俗成的写法,args是参数
// 输出HelloWorld并回车
System.out.println("HelloWorld!");
}
}
Java: 从编译到运行
编译:javac HelloWorld.java
,生成字节码文件HelloWorld.class
运行:java HelloWorld
,运行HelloWorld.class,输出HelloWorld
[administrator@host-172-18-229-12 ~]$ vi HelloWorld.java
[administrator@host-172-18-229-12 ~]$ javac HelloWorld.java
[administrator@host-172-18-229-12 ~]$ java HelloWorld
HelloWorld!
[administrator@host-172-18-229-12 ~]$ cat HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld!");
}
}
Ant
Ant: 环境配置(Win10)
- 下载apache-ant-1.10.0-bin.tar.gz
- 解压到
F:\apache-ant-1.10.0
并设置环境变量
变量名 | 值 |
---|---|
ANT_HOME | F:\apache-ant-1.10.0 |
PATH | F:\apache-ant-1.10.0\bin |
- 运行ant,输出如下表示成功安装
> ant
Buildfile: build.xml does not exist!
Build failed
Ant: 自动编译HelloWorld
- 在当前目录下添加build.xml
<project name="helloworld" default="all" basedir=".">
<target name="all" depends="init,run,jar" >
</target>
<target name="init">
<property name="dirs.base" value="${basedir}"/>
<property name="classdir" value="${dirs.base}/classes"/>
<property name="src" value="${dirs.base}/src"/>
<property name="lib" value="${dirs.base}/lib"/>
<property name="outputjar" value="${dirs.base}/lib/HelloWorld.jar"/>
<mkdir dir="${classdir}"/>
<mkdir dir="${lib}"/>
</target>
<target name="jar" depends="init">
<jar jarfile="${outputjar}" >
<fileset dir="${classdir}" />
</jar>
</target>
<target name="compile" depends="init">
<javac debug="true" srcdir="${src}"
destdir="${classdir}" />
</target>
<target name="run" depends="compile">
<java classname="src.HelloWorld" classpath="${classdir}" />
</target>
<target name="clean" depends="init">
<delete dir="${classdir}"/>
</target>
</project>
- xml语法类似于html。各个字段解释如下:
# 设置project属性:项目名为helloworld, 默认执行all命令,默认目录为当前目录
<project name="helloworld" default="all" basedir="."></project>
# 添加命令all,该命令依赖init,run,jar这三个命令,表示在执行all之前,执行这三个命令
<target name="all" depends="init,run,jar" ></target>
# 添加命令init,该命令会执行介于<target name="init"></target>之间的语句
<target name="init">
# 设置一些变量,变量名为name, 变量值为value, 引用形式为${name}
<property name="dirs.base" value="${basedir}"/>
<property name="classdir" value="${dirs.base}/classes"/>
<property name="src" value="${dirs.base}/src"/>
<property name="lib" value="${dirs.base}/lib"/>
<property name="outputjar" value="${dirs.base}/lib/HelloWorld.jar"/>
# 执行mkdir命令创建目录
<mkdir dir="${classdir}"/>
<mkdir dir="${lib}"/>
</target>
# 添加compile命令,依赖于init。即首先执行init,然后执行javac语句,执行编译
<target name="compile" depends="init">
<javac debug="true" srcdir="${src}"
destdir="${classdir}" />
</target>
# 运行前需要编译
<target name="run" depends="compile">
# 注意classname是包名.类名的形式
<java classname="src.HelloWorld" classpath="${classdir}" />
</target>
其它命令类似,此处不再赘述。
JUnit
JUnit: 环境配置
JUnit: 测试HelloWorld
- 重写HelloWorld.java
public class HelloWorld {
public static String printHelloWorld() {
String output = "HelloWorld";
System.out.println(output);
return output;
}
}
- 编写测试用例,测试
printHelloWorld()
的返回值是否为"HelloWorld"
import junit.framework.TestCase;
public class TestHelloWorld extends TestCase {
public void testPrintHelloWorld() {
HelloWorld hello = new HelloWorld();
String result = hello.printHelloWorld();
assertEquals("HelloWorld", result);
}
}
- 新建
TestAll.java
文件,执行测试用例
import junit.framework.TestSuite;
import junit.framework.Test;
import junit.textui.TestRunner;
public class TestAll extends TestSuite {
public static Test suite() {
TestSuite suite = new TestSuite("TestSuite Test");
suite.addTestSuite(TestHelloWorld.class);
return suite;
}
public static void main(String[] args) {
TestRunner.run(suite());
}
}
JUnit: 编译运行测试
javac -classpath="junit-3.8.1.jar" TestAll.java TestHelloWorld.java HelloWorld.java
java -classpath="junit-3.8.1.jar" TestAll
只要不报错,就代表运行成功。