0

Eclipse Java EE IDE Helios Serviceリリース2ビルドID:20110218-0911を持っています。SeleniumRCでそれらを使用しようとしていますが、コードをコンパイルすると、次のエラーメッセージが表示されます。

  • タイプの不一致:DataProviderSitesからアノテーションに変換できません
  • 属性DataProviderSitesは、注釈タイプTestに対して未定義です。

ただし、コードを検証すると、「検証はエラーや警告なしで完了しました」と視覚化されます。

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

0

検証は、コードの構文をチェックしないように、ロジックをチェックしません。しかし、プログラムをコンパイルすると、構文がチェックされるため、型キャスト例外が発生します。

検証の成功は、プログラムが正しいという意味ではありません。

注釈(@Test(DataProviderSites = "DPS1")、@DataProviderSites(name = "DPS1"))が例外を引き起こすと思います。

于 2013-01-07T13:46:33.277 に答える