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
只要不報錯,就代表運行成功。