2017-05-07 196 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,但它对于一些未知的方法并不适用,现在它突然生效......也许我犯了一些愚蠢的错误。但无论如何,问题解决了。 –