2017-05-07 391 views
1

有一個由其他人託管的maven項目,它有src/main目錄和src/test目錄。 src/test dir包含一個以Test結尾的java文件,我將其稱爲ATest.java,而類ATest僅包含靜態void main函數。這就像運行maven測試命令時沒有測試運行

//omitted 

public class ATest { 
    public static void main(String[] args) throws Exception { 
     BTester.main(null); 
     CTester.main(null); 
    } 
} 

其中BTesterCTester是目錄下兩個文件 src/main/java/<package_path>/tester

當我鍵入mvn clean test,它顯示

[INFO] ------------------------------------------------------- 
[INFO] T E S T S 
[INFO] ------------------------------------------------------- 
[INFO] 
[INFO] Results: 
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

我嘗試以下方法:

  1. import org.junit.Test並在主函數之前添加@Test描述符,但它會給出錯誤,因爲main是靜態的並且它接受參數。然後我試着將BTester.mainCTester.main轉換成另一個功能testmain並在testmain之前加@Test,但是編譯時會導致錯誤,說我有未捕獲的異常,即使我加了throws Exception

  2. 使用maven-surefire-plugin,這裏是我做到了在pom.xml文件 <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.20</version> <configuration> <includes> <include>ATest.java</include> </includes> </configuration> </plugin>

但它仍然無法正常工作。

我錯過了什麼?我對Java不是很熟悉,而不是Maven,所以我現在真的需要一些幫助。謝謝。

回答

1
  1. 嘗試將您的測試類放在/ src/test/java下。
  2. 你需要你的測試方法。不要使用主要的測試方法使用JUNIT 查看此參考:http://www.vogella.com/tutorials/JUnit/article.html
+0

謝謝,它現在有效。其實我昨天已經嘗試了方法2,但它對於一些未知的方法並不適用,現在它突然生效......也許我犯了一些愚蠢的錯誤。但無論如何,問題解決了。 –