代码之家  ›  专栏  ›  技术社区  ›  Steve Staple

testng-为类级测试提供参数

  •  0
  • Steve Staple  · 技术社区  · 7 年前

    我正在使用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: @test on method addprojecttask需要参数“url”,但尚未标记为@optional或defined 在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>
    

    有人知道正确的方法吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Steve Staple    7 年前

    只有从testng.xml运行类时,才会获取这些参数。