30

次の値を渡す必要があります…</p>

exeEvironment (テスト環境) 、 testGroup (testNG 内のグループ)

コマンドラインから -> POM -> TestNG -> テスト ケース。

これら2つの投稿に基づいて....

Maven から Java パラメータを渡す

Surefire Mavenプラグインからguicified TestNGテストにパラメータを渡す方法は?

私は次の構成を行いました..

Surefire プラグインで、次の 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か?</p>

<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");

4

6 に答える 6

50

これはまさに私が自動化テストを探していたもので、うまくいきました。

コマンドライン引数

mvn clean test -Denv.USER=UAT -Dgroups=Sniff

私のポン 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>

また、後者は非推奨であるため、 inの@Parameters代わりに使用することを好みます。parameters@Test()

于 2012-11-29T18:03:31.420 に答える
5

testng xml または pom でグループに対して何も定義する必要はありません。サポートは組み込まれています。コマンドラインhttp://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#groupsでグループを指定するだけです

それが役に立てば幸い..

編集2:

わかりました..ここに別のオプションがあります... IMethodInterceptorを実装します

カスタム プロパティを定義します。コマンド ライン呼び出しで実行する必要がある -Dcustomproperty=group を使用します。

インターセプト呼び出しでは、すべてのメソッドをスキャンします..何らかの効果があります..

System.getProperty("customproperty");
for(IMethodInstance ins : methods) {
    if(ins.getMethod().getGroups()) contains group)
        Add to returnedVal;
    }
return returnedVal;

これを xml のリスナー リストに追加します。

于 2012-11-06T06:31:38.363 に答える
0

環境変数を使用したり、それらを使用するために pom.xml を編集したりする必要はありません。

Build セクションの Invoke Maven 3 の目標とオプションは、パラメーターを取ります。これを試してください(ビルドをパラメータ化したと仮定して):

Invoke Maven 3
  Goals and options = test -Denv=$PARAM_ENV -Dgroup=$PARAM_GROUP
于 2016-01-28T17:52:20.930 に答える