0

我有 Eclipse Java EE IDE Helios Service Release 2 Build id:20110218-0911;我正在尝试将它们与 SeleniumRC 一起使用,当我编译代码时出现下一条错误消息:

  • 类型不匹配:无法从 DataProviderSites 转换为注释
  • 注释类型 Test 的属性 DataProviderSites 未定义

但是,当我验证代码时,可以看到“验证完成且没有错误或警告”

DataProviderSites.java 中的代码是:

打包脚本;

import org.junit.Test;                   
import junit.framework.TestCase;

import com.thoughtworks.selenium.SeleneseTestBase;
import org.junit.AfterClass;
import org.openqa.selenium.server.SeleniumServer;
import org.testng.annotations.*;
import java.io.File;
import jxl.*; 


public class DataProviderSites extends SeleneseTestBase {

    @BeforeClass
    public void setUp() throws Exception {
        SeleniumServer seleniumserver=new SeleniumServer();
        seleniumserver.boot();
        seleniumserver.start();
        setUp("http://www.examinator.ws/", "*firefox");
        selenium.open("/");
        selenium.windowMaximize();
        selenium.windowFocus();
    }


    @DataProviderSites
    (name = "DPS1")
    public Object[][] createData1() throws Exception{
        Object[][] retObjArr=getTableArray("test\\Resources\\Data\\sitios.xls",
                "DataPool", "TestData");
        return(retObjArr);
    }


    @Test(DataProviderSites = "DPS1")

        public void testDataProviderSites(String nombre) throws Exception {    
        selenium.type("sitio", nombre);
        if (selenium.isTextPresent("examinator"))
            selenium.click("xpath=/descendant::button[@type='submit']");

        else

        selenium.waitForPageToLoad("30000");

        selenium.click("xpath=/descendant::a[text()='"+nombre+"']");

        }

    @AfterClass
    public void tearDown(){
        selenium.close();
        selenium.stop();
    } 

    public String[][] getTableArray(String xlFilePath, String sheetName, String tableName) throws Exception{
        String[][] tabArray=null;

            Workbook workbook = Workbook.getWorkbook(new File(xlFilePath));
            Sheet sheet = workbook.getSheet(sheetName); 
            int startRow,startCol, endRow, endCol,ci,cj;
            Cell tableStart=sheet.findCell(tableName);
            startRow=tableStart.getRow();
            startCol=tableStart.getColumn();

            Cell tableEnd= sheet.findCell(tableName, startCol+1,startRow+1, 100, 64000,  false);                

            endRow=tableEnd.getRow();
            endCol=tableEnd.getColumn();
            System.out.println("startRow="+startRow+", endRow="+endRow+", " +
                    "startCol="+startCol+", endCol="+endCol);
            tabArray=new String[endRow-startRow-1][endCol-startCol-1];
            ci=0;

            for (int i=startRow+1;i<endRow;i++,ci++){
                cj=0;
                for (int j=startCol+1;j<endCol;j++,cj++){
                    tabArray[ci][cj]=sheet.getCell(j,i).getContents();
                }
            }


        return(tabArray);
    }
}

有人有解决这个问题的想法吗?

4

2 回答 2

2

只需单击错误并单击“Convert to TestNG(Annotations)”

解决方案列表

于 2015-10-16T07:44:13.750 回答
0

验证不检查逻辑,就像它不检查代码的语法一样。但是当我们编译程序时,它会检查语法,所以你会遇到类型转换异常。

验证成功并不意味着程序是正确的。

我认为 annotations(@Test(DataProviderSites = "DPS1"), @DataProviderSites (name = "DPS1")) 会导致异常。

于 2013-01-07T13:46:33.277 回答