web-dev-qa-db-ja.com

コマンドラインからjunit mavenテストプログラムに入力を渡す方法

2つの数値を加算するjunitテストを作成しました。この番号をコマンドラインから渡す必要があります。私はmavenツールからこのjunitテストを実行しています

mvn -Dtest=AddNumbers

私のテストプログラムはこのようになります

int num1 = 1;
int num2 = 2;

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

これらの数値をコマンドラインから渡す方法は?

31
Achaius

@artbristolによって提案されているようなシステムプロパティとして数値を渡すことは良い考えですが、これらのプロパティがテストに反映されることが常に保証されているわけではないことがわかりました。

システムプロパティを確実にテストに渡すには、次のように maven surefire pluginargLine パラメータを使用します

mvn -Dtest=AddNumbers -DargLine="-Dnum1=1 -Dnum2=2"
35
FrVaBe

コマンドラインからjunit mavenテストプログラムに入力を渡すには、次の手順に従います。たとえば、パラメーターfileNameを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プラグイン構成でパラメーター名を指定し、{fileName}表記を使用してmavenにシステムプロパティから実際の値を取得させる

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <!-- since 2.5 -->
            <systemPropertyVariables>
               <fileName>${fileName}</fileName>
            </systemPropertyVariables>
            <!-- deprecated -->
            <systemProperties>
                <property>
                    <name>fileName</name>
                    <value>${fileName}</value>
                </property>
            </systemProperties>
        </configuration>
    </plugin>
    
  3. コマンドラインで、fileNameパラメータをJVMシステムプロパティに渡します。

    mvn clean test -DfileName=my_file_name.txt
    
17
Vladimir Kroz

あなたはこのようにコマンドラインでそれらを渡すことができます

_mvn -Dtest=AddNumbers -Dnum1=100_

次に、テストでそれらにアクセスします

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

12
artbristol