Как передать ввод из командной строки в тестовую программу junit maven - PullRequest
31 голосов
/ 28 марта 2012

Я написал тест junit для добавления двух чисел. Мне нужно передать эти цифры из командной строки. Я запускаю этот тест джунта от maven tool как

mvn -Dtest=AddNumbers

Моя тестовая программа выглядит так

int num1 = 1;
int num2 = 2;

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

Как передать эти числа из командной строки?

Ответы [ 3 ]

35 голосов
/ 04 мая 2012

Передача чисел в качестве системных свойств, таких как предложенные @artbristol, является хорошей идеей, но я обнаружил, что не всегда гарантируется, что эти свойства будут распространены на тест.

Чтобы не пропуститьСистемные свойства для теста используют параметр maven surefire argLine , например

mvn -Dtest=AddNumbers -DargLine="-Dnum1=1 -Dnum2=2"
16 голосов
/ 21 декабря 2013

Чтобы передать ввод из командной строки в тестовую программу 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
    
12 голосов
/ 29 марта 2012

Вы можете передать их в командной строке, как это

mvn -Dtest=AddNumbers -Dnum1=100

затем получите доступ к ним в вашем тесте с помощью

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

...