Как передать входные данные из командной строки в тестовую программу junit maven
Я написал тест junit, чтобы добавить два числа. Мне нужно передать эти цифры из командной строки. Я запускаю этот тест junit из maven tool как
mvn -Dtest=AddNumbers
Моя тестовая программа выглядит так
int num1 = 1;
int num2 = 2;
@Test
public void addNos() {
System.out.println((num1 + num2));
}
Как передать эти цифры из командной строки?
Ответы
Ответ 1
Передача чисел как системных свойств, таких как предложенная @artbristol, является хорошей идеей, но я обнаружил, что не всегда гарантировано, что эти свойства будут распространены на тест.
Чтобы проверить свойства системы для теста, используйте плагин maven surefire argLine параметр, например
mvn -Dtest=AddNumbers -DargLine="-Dnum1=1 -Dnum2=2"
Ответ 2
Чтобы передать входные данные из командной строки в тестовую программу junit maven, выполните следующие действия. Например, если вам нужно передать параметр имя_файла в unit test, выполненный Maven, выполните следующие шаги:
-
В параметре JUnit code передается через свойства System:
@BeforeClass
public static void setUpBeforeClass() throws Exception {
String fileName = System.getProperty("fileName");
log.info("Reading config file : " + fileName);
}
-
В pom.xml - укажите имя параметра в конфигурации плагина surefire и используйте нотацию {fileName}, чтобы заставить maven получить фактическое значение из свойств System
<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>
-
В командной строке передайте параметр fileName параметрам системы JVM:
mvn clean test -DfileName=my_file_name.txt
Ответ 3
Вы можете передать их в командной строке следующим образом
mvn -Dtest=AddNumbers -Dnum1=100
затем обращайтесь к ним в своем тесте с помощью
int num1=Integer.valueOf(System.getProperty("num1"));