当前位置: 首页 > 知识库问答 >
问题:

如何从maven向Java代码传递一个参数进行测试

柴琦
2023-03-14

我需要传递以下价值观…

exeEvironment(测试环境),testGroup(testNG中的组)

从命令行->POM->TestNG->测试用例。

基于这两个帖子....

从maven传递一个Java参数

如何从Surefire Maven插件向guicified TestNG测试传递参数?

我做了以下配置..

在surefire插件中,我尝试了两个选项,但似乎都不起作用。

=====

(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>

这似乎不太好用,我是否需要定义一个参数。

在测试用例中,我试图通过以下两种方式获取变量…。(1)

java prettyprint-override">testEnv = testContext.getSuite().getParameter("exeEnvironment");
testGroup = testContext.getSuite().getParameter("testGroup");

(2)

testEnv = System.getProperty("exeEnvironment");
testGroup = System.getProperty("testGroup");

共有1个答案

赵嘉纳
2023-03-14

这正是我在寻找我的自动化测试的东西,我得到了它的工作。

命令行参数

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

我的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>

测试

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,因为后者不推荐使用。

 类似资料:
  • 问题内容: 我需要使用Maven执行一些测试,并从命令行传递参数。 我的Java代码应获取以下参数:System.getenv(“ my_parameter1”); 并以下面的示例在pom.xml文件中定义参数:(和后者,我将修改pom.xml以从公共行mvn clean install -Dmy_parameter1 = value1获取参数) 但它不起作用;System.getenv(“ my

  • 我尝试将参数从命令行传递到gradle。 我的身材是: 当我这样做时: 我得到这个: 我的问题是我应该为main提供什么?任何java文件包的名称?有具体的路径吗?什么应该是真正的源集?

  • 考虑下面的用例。 设计用于创建用户帐户的测试用例。 现在我想用不同的参数运行这个测试用例,例如名称、年龄等,我想通过命令行控制这些参数。

  • 问题内容: 我正在尝试为我的应用程序编写查询,但是遇到了一些麻烦。我需要将数据库的一个字段作为参数传递,例如: 因为WHERE子句和ORDER BY子句是动态的,所以用户可以选择。 使用它没有用。 问题答案: JasperReports中 有两个用于参数引用的语法表达式: 和和 。 $ P {paramName}语法 主要用于设置 WHERE 输入参数值。替换算法是“智能”的,其实现使用java.

  • 本文向大家介绍JavaScript实现向setTimeout执行代码传递参数的方法,包括了JavaScript实现向setTimeout执行代码传递参数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现向setTimeout执行代码传递参数的方法。分享给大家供大家参考。具体分析如下: setTimeout函数是javascript中实现动态效果最关键的函数。但昨

  • 我有一个junit测试testArchive()。Junit测试测试存档文件并将url作为字符串返回给它的archive()方法。URL被定义为Junit测试类中的实例变量。 我正在为sendEmail()编写另一个Junit测试,它通过电子邮件发送URL。但是URL被定义为一个类变量,结果却是空的 你能让我知道我需要如何修正我的Junit测试发送电子邮件吗? 谢谢你