0

我有这个类,里面有一个方法(随机化器)

public class WebDriverCustomMethods {

        public int randomizer(int min, int max) {
            int d = (max - min) + 1;
            int c = min + (int) (Math.random() * ((d)));
            return c;
        }

我想在我的测试类中使用,如下所示:

public class AppTest3 { 

    public static DataProviderClass appdata;
    public static WebDriverCustomMethods w;

    public static void main (String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        appdata = (DataProviderClass) context.getBean("data");  
        w = (WebDriverCustomMethods) context.getBean("wdcm");
    }

    @Test(dataProvider="standardTestData", dataProviderClass=DataProviderClass.class)
    public void oneUserTwoUser(WebDriver driver, WebDriverWait wait, ArrayList<ArrayList<String>> array) throws Exception {

            int randomNumber = w.randomizer(1, 99999);

当我运行它并且代码开始使用 w.randomizer(1,9999) 时,我收到以下错误:

java.lang.NullPointerException
    at com.f1rstt.tests.AppTest3.oneUserTwoUser(AppTest3.java:34) //this is int randomNumber = w.randomizer(1, 99999);
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

这是我的 spring.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans SYSTEM "http://www.springframework.org/dtd/spring-beans-2.0.dtd" PUBLIC "-//SPRING//DTD BEAN 2.0//EN">
<beans>
    <bean id="data" class="com.blah.tests.DataProviderClass"/>
    <bean id="wdcm" class="com.blah.tests.WebDriverCustomMethods"/>
</beans>
4

1 回答 1

2

TestNG 不关心您的主要方法。因此,在执行测试时它永远不会被调用,因此字段也永远不会被执行。

阅读TestNG文档的介绍,其中解释了 @BeforeXxx 注释。

也就是说,我不知道您为什么在这些测试中使用 Spring,而不是自己创建 2 个类的新实例。

于 2013-08-13T13:28:08.443 回答