2012-03-28 14 views
22

2つの数字を追加するjunitテストを書いた。私はコマンドラインからこの番号を渡す必要があります。コマンドラインからjunit mavenテストプログラムに入力を渡す方法

mvn -Dtest=AddNumbers 

私のテストプログラムは、コマンドラインからこれらの番号を渡すためにどのようにこの

int num1 = 1; 
int num2 = 2; 

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

のように見えるように私は、Mavenのツールから、このJUnitテストを実行しているのですか?

+1

我々はそれを行う方法を、ここで – nullpointer

答えて

8

あなたは、この

mvn -Dtest=AddNumbers -Dnum1=100

のようなコマンドラインに渡す@artbristolによって提案されたように、システムのプロパティとして番号を渡す

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

+0

マークの答えを持っていてくださいできますか? –

25

とテストでそれらにアクセスすることができます良いアイデアですが、これらのプロパティがテストに伝播することは必ずしも保証されていないことがわかりました。

は、次の手順を実行するJUnitのMavenのテストプログラムにコマンドラインからの入力を渡すには

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

のように、maven surefire pluginargLineパラメータを使用してテストするシステムプロパティを渡すようにしてくださいするには。あなたはMavenので実行されるユニットテストにパラメータfileNameにを渡す必要がある場合たとえば、その後の手順は、次のとおりです。JUnitのコードで

  1. を - パラメータは、システムプロパティを経由して渡されます。

    @BeforeClass 
    public static void setUpBeforeClass() throws Exception { 
        String fileName = System.getProperty("fileName"); 
        log.info("Reading config file : " + fileName); 
    } 
    
  2. pom.xmlで

    - は確実なプラグイン構成でPARAM名を指定し、システムプロパティから実際の値を取得するためにMavenを強制的に{fileNameに}表記を使用

    <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 
    
関連する問題