次の値を渡す必要があります…
exeEvironment(テスト環境)、testGroup(testNGのグループ)
コマンドラインから-> POM-> TestNG->テストケース。
これらの2つの投稿に基づいて....
Surefire Mavenプラグインから検証済みのTestNGテストにパラメーターを渡す方法?
私は次の設定を行いました..
surefire pluginでは、次の2つのオプションを試しましたが、どれも機能していないようです。
=====
(1)
<execution>
<id>default-test</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<properties>
<exeEnvironment>${exeEnvironment}</exeEnvironment>
<testGroup>${testGroup}</testGroup>
</properties>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</execution>
(2)
<execution>
<id>default-test</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<systemPropertyVariables> <exeEnvironment>${exeEnvironment}</exeEnvironment>
<testGroup>${testGroup}</testGroup> </systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</execution>
testNG.xmlで、変数testGroup
を使用できますか…
<test name="Web Build Acceptance">
<groups>
<run>
<include name="${testGroup} />
</run>
</groups>
<classes>
<class name="com.abc.pqr" />
</classes>
</test>
これもうまくいかないようです。パラメータを定義する必要がありますか。
テストケースでは、次の2つの方法で変数を取得しようとしました…。 (1)
testEnv = testContext.getSuite().getParameter("exeEnvironment");
testGroup = testContext.getSuite().getParameter("testGroup");
(2)
testEnv = System.getProperty("exeEnvironment");
testGroup = System.getProperty("testGroup");
これは私が私の自動化テストを探していた正確なものであり、私はそれを機能させました。
コマンドライン引数
_mvn clean test -Denv.USER=UAT -Dgroups=Sniff
_
My Pom Xml
_<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>TestNg</groupId>
<artifactId>TestNg</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<systemPropertyVariables>
<environment>${env.USER}</environment>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</project>
_
TestNGテスト
_import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class TestAuthentication {
@Test (groups = { "Sniff", "Regression" })
public void validAuthenticationTest(){
System.out.println(" Sniff + Regression" + System.getProperty("environment"));
}
@Test (groups = { "Regression" },parameters = {"environment"})
public void failedAuthenticationTest(String environment){
System.out.println("Regression-"+environment);
}
@Parameters("environment")
@Test (groups = { "Sniff"})
public void newUserAuthenticationTest(String environment){
System.out.println("Sniff-"+environment);
}
}
_
上記はうまく機能します。さらに、_testng.xml
_を使用する必要がある場合は、次のようにsuiteXmlFile
を指定できます。
_ <plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<systemPropertyVariables>
<environment>${env.USER}</environment>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
_
また、@Test()
でparameters
の代わりに_@Parameters
_を使用することをお勧めします。後者は非推奨です。
Testng xmlまたはpomでグループに何も定義する必要はありません。サポートは組み込まれています。 cmd行でグループを単純に指定できます http://maven.Apache.org/plugins/maven-surefire-plugin/test-mojo.html#groups
それが役に立てば幸い..
編集2:
OK..so別のオプションがあります...実装 IMethodInterceptor
カスタムプロパティを定義します。コマンドライン呼び出しで-Dcustomproperty = groupthatneedstoberunを使用します。
インターセプト呼び出しで、すべてのメソッドをスキャンします。
System.getProperty("customproperty");
for(IMethodInstance ins : methods) {
if(ins.getMethod().getGroups()) contains group)
Add to returnedVal;
}
return returnedVal;
これをxmlのリスナーリストに追加します。
パーフェクト。
POM.xmlからABC.Java
に変数を渡す最も簡単な方法
POM.xml
<properties>
<hostName>myhostname.com</hostName>
</properties>
ABC.Java
では、次のようなシステムプロパティから呼び出すことができます
System.getProperty("hostName")
ブラウザなどのパラメータを渡すには、次のようにします。
<properties>
<BrowserName></BrowserName>
<TestRunID></TestRunID>
</properties>
<!-- Below plug-in is used to execute tests -->
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/${testXml}</suiteXmlFile>
</suiteXmlFiles>
<systemPropertyVariables>
<browserName>${BrowserName}</browserName>
<testRunID>${TestRunID}</testRunID>
</systemPropertyVariables>
</configuration>
<executions>
<execution>
<id>surefire-it</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</execution>
</executions>
</plugin>
Javaコードでこれを処理するには、これを使用します:
public static final String Browser_Jenkin=System.getProperty("BrowserName");
public static final String TestRunID=System.getProperty("TestRunID");
public static String browser_Setter()
{
String value=null;
try {
if(!Browser_Jenkin.isEmpty())
{
value = Browser_Jenkin;
}
} catch (Exception e) {
value =propObj.getProperty("BROWSER");
}
return value;
}
public static String testRunID_Setter()
{
String value=null;
try {
if(!TestRunID.isEmpty())
{
value = TestRunID;
}
} catch (Exception e) {
value =propObj.getProperty("TEST_RUN_ID");
}
return value;
}
環境変数を使用したり、pom.xmlを編集して使用したりする必要はありません。
BuildセクションのInvoke Maven 3の目標とオプションはパラメーターを取ります。これを試してください(ビルドをパラメーター化したと仮定):
Invoke Maven 3
Goals and options = test -Denv=$PARAM_ENV -Dgroup=$PARAM_GROUP