TestNG将data provider定义在其他的class中,最终的执行结果直接Skip了

问题描述:根据TestNG官方文档说明,可以将data Provider 定义在其他的类中,只需要将data provider的方法定义为静态方法,同时在引用data provider的时候指定dataProviderClass属性值即可,我按照这个流程进行操作,最后的运行结果却不是pass,而是skip,希望各位友人帮忙解答一下。

TestForDataProvider.java代码如下

 package com.testngdemo;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

class StaticProvider{
    @DataProvider(name = "data1")
    public static Object[][] createData1(){
        return new Object[][]{
            {"heting", new Integer(23)},
            {"zhougang", new Integer(31)}
        };
    }
}
public class TestForDataProvider {
    @Test(dataProvider = "data1", dataProviderClass = StaticProvider.class)
    public void test1(String name, Integer age) {
        System.out.println(name + "的年纪:" + age + "岁");
    }
}

testng.xml文件内容如下

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="suite1">
    <test name="test1">
        <classes>
            <class name="com.testngdemo.TestForDataProvider"></class>
        </classes>
    </test>
</suite>

执行结果如下
图片说明

官方文档如下:
图片说明

http://www.cnblogs.com/zhangfei/archive/2012/10/09/2717043.html

图片说明
StaticProvider类和测试类不能在同一个文件中,同一个文件中就可能报这个错。看报错信息,推断应该是访问权限不够,导致报异常。
StaticProvider放一个单独类里,是能成功的。
官网给出的例子, StaticProvider类是public的,证明是放在一个单独的文件里的,不是在一个文件中。