Я запускаю тесты с использованием рабочего пространства TestNG, Java и Eclipse. Я могу проводить тесты разными способами. Я могу запустить файл TestNG или отдельные классы. Если я запускаю отдельный класс, параметры не берутся из файла TestNG.xml. Возможно, я захочу переключить тестирование на другой URL-адрес. Эта форма, приведенная в Руководстве, не работает и только выдает ошибки.
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterizedTest1 {
@Test
@Parameters("myName")
public void parameterTest(String myName) {
System.out.println("Parameterized value is : " + myName);
}
}
Это из учебника на https://www.tutorialspoint.com/testng/testng_parameterized_test.htm
Ошибка говорит следующее: [Utils] [ERROR] [Error] org.testng.TestNGException: Параметр url требуется для @Test в методе addProjectTask, но он не отмечен как @Optional и не определен. в C: \ Users \ SStaple \ AppData \ Local \ Temp \ testng-eclipse-38561327 \ testng-customsuite.xml
*** Я назвал свой URL-адрес параметра. то есть:
@Test(groups = { "all", "projects", "create", "simple" })
@Parameters("url")
public void addProjectTask(String url) {
System.out.println("Parameterized value is : " + url);
Я не хочу перекодировать это каждый раз, когда переключаю URL.
Testng.xml выглядит так:
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite allow-return-values = "false" configfailurepolicy = "skip"
data-provider-thread-count = "10" group-by-instances = "false" guice-stage = "DEVELOPMENT"
junit = "false" name = "hardening-simple" parallel = "none" preserve-order = "true"
skipfailedinvocationcounts = "false" thread-count = "5">
<parameter name = "browser" value = "firefox" />
<parameter name = "url" value = "https://url/#/" />
<parameter name = "printToFile" value = "true" />
<parameter name = "trace" value = "false" />
<parameter name = "opt" value = "true" />
<parameter name = "customer" value = "Demo" />
<parameter name = "network" value = "NSG Designated Streets (Type 1/2)" />
<parameter name = "buildNo" value = "025" />
<parameter name = "teamCity" value = "false" />
<parameter name = "retest" value = "0" />
<parameter name = "user" value = "normal" />
<listeners>
<listener class-name = "listeners.TestNGCustomReportListener" />
</listeners>
<test allow-return-values = "false" group-by-instances = "false"
junit = "false" name = "firefoxTest" preserve-order = "true"
skipfailedinvocationcounts = "false">
<parameter name = "browser" value = "firefox" />
<parameter name = "url" value = "https://url/#/" />
<parameter name = "opt" value = "true" />
<parameter name = "user" value = "normal" />
<groups>
<define name = "simple">
<include name = "simple" />
</define>
<run>
<include name = "simple" />
<exclude name = "not-implemented" />
</run>
</groups>
<classes>
Кто-нибудь знает правильный метод?




Эти параметры используются только в том случае, если класс запускается из testng.xml.
Использование параметров - не оптимальное решение. Управляйте своими значениями из файла свойств, таким образом вы можете сохранить все свои данные. Вы можете создавать переменные в своем коде и использовать значения из файла свойств. Вы можете изменить данные в файле свойств, не меняя код, но более управляемым способом. Если существует более одного набора данных, вы можете использовать несколько файлов свойств и просто указать адрес файла.
Учебник для файла свойств: https://thewikihow.com/video_bljA8dpfWeQ
Если бы вы могли внести в это некоторую ясность, это было бы более полезно. Ссылки обычно не одобряются, поскольку на них нельзя положиться. Возможно, вы могли бы объяснить, почему ваш ответ лучше.