编译代码时Eclipse中出错,但验证时未出错

时间:2013-01-07 13:32:35

标签: eclipse testing helios

我有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);
    }
}

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

2 个答案:

答案 0 :(得分:2)

只需点击错误,然后点击“转换为TestNG(注释)”

Solution List

答案 1 :(得分:0)

验证不检查逻辑,因为它不检查代码的语法。 但是当我们编译程序时,它将检查语法,因此你得到了类型转换异常。

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

我认为注释(@Test(DataProviderSites =“DPS1”),@ DataProviderSites     (name =“DPS1”))导致异常。