繁体   English   中英

TestNG:以编程方式运行测试 - 执行测试方法时,在 XmlTest 对象上设置的参数为空

[英]TestNG: Running test programmatically - parameters set on XmlTest object are null when executing test method

我想使用 TestNG 以编程方式运行测试套件。

我创建了测试结构:XmlSuite -> XmlTest -> TestClass(它扩展了 XmlClass)

我在做三件事:

  • 使用 addParameter(String, String) 向 XmlTest 添加参数
  • 使用 setParameters(Map) 将参数设置为 TestClass
  • 在 TestClass 中设置变量 Day

但是在测试执行时会发生什么,当它转到 @Test 方法时,对象没有我之前设置的东西。

代码

public class TestRunner {
    public static void main(String[] args) {
        XmlSuite suite = new XmlSuite();
        suite.setName("TmpSuite");

        XmlTest test = new XmlTest(suite);
        test.setName("TmpTest");
        // Add parameter to XmlTest
        test.addParameter("testParam1", "clock");

        TestClass testClass = new TestClass();

        // Add parameter to XmlClass
        Map<String, String> testClassParameters = new HashMap<>();
        testClassParameters.put("classParam1", "valueOfClassParam1");
        testClass.setParameters(testClassParameters);

        // Set day variable
        testClass.setDay("Friday");
        testClass.setClass(TestClass.class);

        test.setXmlClasses(Arrays.asList(testClass)) ;

        TestNG tng = new TestNG();
        tng.setXmlSuites(Arrays.asList(suite));

        tng.run();
    }
}

public class TestClass extends XmlClass {

    private String day;

    @Test
    public void test1() {
        System.out.println("Day: " + day);
        System.out.println("LocalParameters: " + getLocalParameters());
        System.out.println("AllParameters: " + getAllParameters());
    }

    public void setDay(String day) {
        this.day = day;
    }
}

结果:

Day: null
LocalParameters: {}
------------> Exception

我认为你期望做的是:

public class TestRunner {
    public static void main(String[] args) {
        // Add parameter to XmlClass
        Map<String, String> testClassParameters = new HashMap<>();
        testClassParameters.put("classParam1", "valueOfClassParam1");
        testClassParameters.put("day", "Friday");

        XmlClass testClass = new XmlClass();
        testClass.setParameters(testClassParameters);
        testClass.setClass(TestClass.class);    

        XmlSuite suite = new XmlSuite();
        suite.setName("TmpSuite");

        XmlTest test = new XmlTest(suite);
        test.setName("TmpTest");
        // Add parameter to XmlTest
        test.addParameter("testParam1", "clock");
        test.setXmlClasses(Arrays.asList(testClass)) ;

        TestNG tng = new TestNG();
        tng.setXmlSuites(Arrays.asList(suite));    
        tng.run();
    }
}

public class TestClass {

    @Parameters({ "day", "testParam1", "classParam1" })
    @Test
    public void test1(String day, String testParam1, String classParam1) {
        System.out.println("Day: " + day);
        System.out.println("testParam1: " + testParam1);
        System.out.println("classParam1: " + classParam1);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM