2012-03-28 25 views
22

我寫了一個junit測試來添加兩個數字。我需要從命令行傳遞這些數字。我正在從行家工具這個JUnit測試作爲如何從命令行傳遞輸入到junit maven測試程序

mvn -Dtest=AddNumbers 

我的測試程序看起來像這樣

int num1 = 1; 
int num2 = 2; 

@Test 
public void addNos() { 
    System.out.println((num1 + num2)); 
} 

如何從命令行傳遞這些數字呢?

+1

我們能不能在這裏 – nullpointer 2016-11-28 04:59:58

回答

8

您可以將它們像這樣

mvn -Dtest=AddNumbers -Dnum1=100

在命令行上,然後用

int num1=Integer.valueOf(System.getProperty("num1"));

+0

標誌着一個答案,如果我們需要傳遞字符串參數,該怎麼辦呢? – 2016-03-14 10:52:15

25

傳遞的數字爲系統屬性訪問它們在您的測試樣通過@artbristol建議是一個好主意,但我發現它並不總能保證這些屬性會傳播到測試中。

就一定要系統屬性傳遞給測試使用maven surefire pluginargLine參數,如

mvn -Dtest=AddNumbers -DargLine="-Dnum1=1 -Dnum2=2" 
10

要通過命令行輸入您按照這些步驟的JUnit的Maven測試程序。例如,如果需要文件名傳遞參數到由Maven的執行單元測試,然後按照步驟:

  1. 在JUnit代碼 - 參數將通過系統屬性進行傳遞:

    @BeforeClass 
    public static void setUpBeforeClass() throws Exception { 
        String fileName = System.getProperty("fileName"); 
        log.info("Reading config file : " + fileName); 
    } 
    
  2. 在pom.xml中 - 在surefire插件配置中指定param名稱,並使用{fileName}表示法強制maven從系統屬性中獲取實際值

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
         <systemProperties> 
          <property> 
           <name>fileName</name> 
           <value>${fileName}</value> 
          </property> 
         </systemProperties> 
        </configuration> 
    </plugin> 
    
  3. 在命令行中傳遞文件名參數JVM系統屬性:

    mvn clean test -DfileName=my_file_name.txt 
    
相關問題