1) 위의 코드에서, 나는 다른 테스트 유형이 회귀 경우, 내가
Regression.java를 호출 원하는 곳 Sanity.java 파일을 호출 할
TestNG는 그룹이라는 개념을 제공하므로 해결 될 것입니다. @Test
메서드마다 groups
특성을 추가 한 다음 suite xml 파일에서 실행할 그룹을 선택하고 선택할 수 있습니다. 자세한 내용은 공식 문서 here을 참조하십시오.
2) 우리는 testng.xml 예에서 다른 XML 태그를 입력으로 매개 변수 값을 전달할 수 있습니다 :이 값이 dyanamically 매개 변수 값을 기준으로 feeded하려면 다음 경우
확실하지가 후에 무엇 하지만 testng suite xml 파일의 매개 변수는 본질적으로 항상 정적입니다. 그들은 suite XML 파일을 변경하거나 (또는) org.testng.IAlterSuiteListener
과 같은 TestNG 수신기를 사용하여 다른 것을 기반으로 매개 변수를 변경하지 않는 한 변경할 수 없습니다. 다음은 샘플을 보여줍니다이다 나는
매개 변수는이 리스너는 jvm_
로 시작 JVM 인수를 찾습니다
package com.rationaleemotions.stackoverflow.qn46216357;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class SampleTestClass {
@Test
@Parameters("name")
public void testMethod(String name) {
System.err.println("Hello " + name);
}
}
를 주입 할 것으로 예상 테스트 클래스에 대해 이야기하고 그 이름의 매개 변수와 일치하고있는 무슨 suite xml을 찾고 발견 된 경우 JVM 인수에서 보낸 값으로 매개 변수 값을 업데이트합니다. 그래서이 방법을 사용하면 문자 그대로 당신이 얻은 것을 얻을 수 있습니다. 당신이 볼 수 있듯이 스위트 XML, 나는
그래서 바로 경우, 매개 변수 이름 알 수없는의 값을 정의
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="46216357_Suite" verbose="2">
<listeners>
<listener class-name="com.rationaleemotions.stackoverflow.qn46216357.ParameterChangerListener"/>
</listeners>
<parameter name="name" value="Unknown"/>
<test name="46216357_test">
<classes>
<class name="com.rationaleemotions.stackoverflow.qn46216357.SampleTestClass"/>
</classes>
</test>
</suite>
처럼 보이는 방법은 다음과
package com.rationaleemotions.stackoverflow.qn46216357;
import org.testng.IAlterSuiteListener;
import org.testng.xml.XmlSuite;
import java.util.List;
import java.util.Map;
public class ParameterChangerListener implements IAlterSuiteListener {
@Override
public void alter(List<XmlSuite> suites) {
XmlSuite suite = suites.get(0);
for (Map.Entry<String, String> each : suite.getParameters().entrySet()) {
//Check to see if we were given any JVM arguments with the prefix as "jvm_" followed
//by the text of the parameter name.
String sysValue = System.getProperty("jvm_" + each.getKey());
if (sysValue != null && !sysValue.trim().isEmpty()) {
each.setValue(sysValue);
}
}
}
}
입니다 suite xml을 클릭하고 원하는 IDE에서 실행하면 출력은 아래와 같이 보입니다.
...
... TestNG 6.12 by Cédric Beust ([email protected])
...
Hello Unknown
PASSED: testMethod("Unknown")
===============================================
46216357_test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
46216357_Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
그러나 동일한 제품군을 실행하는 경우 JVM 인수 -Djvm_name
을 전달하면 출력이 달라집니다.-Djvm_name=Rambo
...
... TestNG 6.12 by Cédric Beust ([email protected])
...
Hello Rambo
PASSED: testMethod("Rambo")
===============================================
46216357_test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
46216357_Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
3) 또한,이 파라미터의 입력에서 병렬 브라우저 테스트를 호출하는 방법 : 여기 람보로 값을 전달하고, 상기 런 출력입니까?
나는 이것을 조금 바꿔서 병렬 모드를 JVM 인수로 읽고이를 바탕으로 병렬 실행 전략을 변경하는 것이 좋습니다. 내가 위에서 공유로 당신은 기본적으로 IAlterSuiteListener
구현의 동일한 종류를 사용하고 아래와 같이 볼 수 있었다 :
import org.testng.IAlterSuiteListener;
import org.testng.xml.XmlSuite;
import java.util.List;
public class ParallelExecutorSetter implements IAlterSuiteListener {
@Override
public void alter(List<XmlSuite> suites) {
XmlSuite suite = suites.get(0);
String parallelMode = System.getProperty("parallelMode");
XmlSuite.ParallelMode mode = XmlSuite.ParallelMode.getValidParallel(parallelMode);
if (mode != null) {
suite.setParallel(mode);
}
}
}
그래서 당신은 이제 JVM 인수를 통해 전달하여 병렬 모드를 변경할 수 있습니다. 예를 들어, -DparallelMode=methods
는 parallel
페이지에서 모든
@Test
방법을 실행 : [어떻게 X를해야합니까?] (https://meta.stackoverflow.com/questions/253069/whats-the-appropriate-new-current- Do-Do-Do-Do-Do-Do-Do-Do-Do-Do-X)에 대한 기대는 질문을하는 사용자가 자신의 질문에 답하는 연구뿐만 아니라 연구, 코드 시도 및 결과를 공유한다는 것입니다. 이것은 시간을내어 자신을 도우려는 것을 보여 주며, 명백한 답을 되풀이하지 않아도되며, 무엇보다도보다 구체적이고 관련성있는 답변을 얻는 데 도움이됩니다! 또한보십시오 : [ask] – JeffC