前一日我們用徒手將攻城獅的日常生活走完一遭,師傅告訴我是不是可以加個log加個Junit測試呢,於是我們又開始辛苦的一天
做個專業的攻城師專案可能沒有Junit進行測試,但一定少不了log,為求更進一步我們在原先的專案中加入log與Junit測試來看看吧
我們先到logback官網看一下導入log的起手勢吧,我們按照步驟下面連結下載對應Jar
我們採用Junit4,我們來看一下官網告訴我們需要那些吧
有了前天編譯的class檔與打包完的Jar放在同一個資料顯得雜亂樣態,更何況那些資料是不需要進版控的,所以我們將src資料夾放置我們的source code,target放置我們的編譯與打包檔案,lib放置我們相依的套件,conf放置logback設定檔
MyProject
+---conf
| logback.xml
|
+---lib
| junit-4.13.2.jar
| logback-classic-1.5.18.jar
| logback-core-1.5.18.jar
| slf4j-api-2.0.17.jar
|
+---src
| Main.java
| MainTest.java
|
\---target
Main.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
// 建立 Logger 實例
private static final Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
logger.info("Application running...");
System.out.println(runApplication());
logger.info("Application finished.");
}
public static String runApplication() {
return "Hello World!";
}
}
MainTest.java
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class MainTest {
@Test
public void testRunApplication() {
assertEquals("Hello World!", Main.runApplication());
}
}
編譯
javac src\*.java -s src -d target -cp "lib\junit-4.13.2.jar;lib\slf4j-api-2.0.17.jar"
測試
java -cp "target\;lib\*" org.junit.runner.JUnitCore MainTest
jar cfe target\MyApp.jar Main -C target .
執行發現到事情沒有我們想的那麼簡單,因為jar根本不能下cp參數
注意這邊我們無法以java -jar的方式運行,因為jar本身無法直接讀取外部依會發生Exception
此時我們只能使用將我們的jar加到classpath中讓他去找Main執行
java -cp "target\MyApp.jar;lib\*" Main
部署我們以這個jar可以執行帶過,畢竟只是放到我們部署的資料夾MyApp中,修改一下bat檔
@echo off
java "H:\MyApp\MyApp.jar" -cp ".lib\*" Main
pause
難道我不能以java -jar執行?我的測試代碼被我不小心打包了,天啊!!做攻城獅好辛苦...