2015-07-02 6 views
1

Я довольно новичок в Selenium webdriver и Java, ранее я использовал Selenium IDE. Я пытаюсь прочитать testdata из листа Excel. Затем он записывается в консоль Eclipse, которая работает и должна использоваться для выполнения фактического теста, который не работает. Фактический тест не выполняется, потому что я получаю несоответствие типа аргумента ошибки. Код выглядит так:Несоответствие типа аргумента в JUnit

package Test_Excel; 

import java.io.FileInputStream; 
import java.io.IOException; 
import java.util.Arrays; 
import org.junit.Assert; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.Parameterized; 
import org.junit.runners.Parameterized.Parameters; 
import jxl.Sheet; 
import jxl.Workbook; 
import jxl.read.biff.BiffException; 

@RunWith(Parameterized.class) 
public class TestWithExcelData { 

    // Our two parameters 
    private final int input; 
    private final int resultExpected; 

    // Constructor 
    public TestWithExcelData(int input, int result) { 
     this.input = input; 
     this.resultExpected = result; 
    } 

    @Parameters 
    public static Iterable<Object []> data() throws BiffException, IOException 
    { 

     String FilePath = "C://Selenium//workspace//testproject//src//testdata//TestData.xls"; 
     FileInputStream fs = new FileInputStream(FilePath); 

     Object[][] object = new Object[6][2]; 
     Workbook wb = Workbook.getWorkbook(fs); 
     //locate the excel file in the local machine 

     Sheet sheet = wb.getSheet("IOResult"); 
     int i=1; //avoid header row 
     while(!(sheet.getCell(0, i).getContents().equals("end"))) //read data till it reaches the cell whose text is ‘end’ 
     { 

      object[i-1][0]=sheet.getCell(0, i).getContents(); 
      object[i-1][1]=sheet.getCell(1, i).getContents(); 
      System.out.print(sheet.getCell(0, i).getContents() + "\t"); 
      System.out.print(sheet.getCell(1, i).getContents() + "\t"); 
      System.out.println(); 
      i++; 

     } 
     return Arrays.asList(object); 
    } 

    @Test 
    public void testSquareOff(){ 
     Assert.assertEquals(resultExpected, MathUtils.square(input)); 
    } 
} 

Есть ли кто-нибудь, кто может указать мне в правильном направлении?

Заранее спасибо

+0

Можете ли вы показать нам трассирование? –

+0

Кстати, вам не нужно обертывать массив объектов в список в JUnit 4.12. data() может возвращать Object [] []. См. Http://junit.org/javadoc/latest/org/junit/runners/Parameterized.html. –

ответ

0

Метод sheet.getCell(column, row).getContents() возвращает строку, но ваш конструктор ожидает int.

Вы можете изменить две строки в методе data():

object[i-1][0] = Integer.valueOf(sheet.getCell(0, i).getContents()); 
object[i-1][1] = Integer.valueOf(sheet.getCell(1, i).getContents()); 
Смежные вопросы