Foros del Web » Programación para mayores de 30 ;) » Java »

automatización pruebas obtener datos de fichero excel

Estas en el tema de automatización pruebas obtener datos de fichero excel en el foro de Java en Foros del Web. Hola! Estoy haciendo un script para automatizar el acceso a una intranet de forma que coja el usuario y contraseña de un fichero excel, pero ...
  #1 (permalink)  
Antiguo 20/09/2012, 05:01
 
Fecha de Ingreso: septiembre-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
automatización pruebas obtener datos de fichero excel

Hola!

Estoy haciendo un script para automatizar el acceso a una intranet de forma que coja el usuario y contraseña de un fichero excel, pero al ejecutarlo me da un problema de alguna inicialización, parece ser por algun cast, la excepción que salta es java.lang.ClassCastException: [[Ljava.lang.String; cannot be cast to java.util.List , pero no sé donde puede estar el error. A través de system.out.println que fuí colocando en el código ví que recuperaba bien los datos del archvio excel.

¿Podría alguien ayudarme? Muchas gracias de antemano!!!

package test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.SeleneseTestBase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

//Con este comando se indica que la clase utilizara parametros
@RunWith(Parameterized.class)

public class LoginReusableParam extends SeleneseTestBase{

public static int getnumUsuarios (){
String num="0";
{
System.out.println("No usuarios en el archivo");
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conexion = DriverManager.getConnection("jdbc:odbc:Datos_acces o");
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery("select COUNT (user_id) from [Hoja1$]");
{
/*public abstract Object getObject(int indiceColumna) throws SQLException
public abstract Object getObject(string nombreColumna) throws SQLException
Obtiene el valor contenido en la columna como un objeto Java cuyo tipo
sigue la traducción estándar JDBC de tipos SQL a tipos Java.
Este método es válido para tipos específicos de la base de datos. */
num=rs.getObject(1).toString();
}
conexion.close();
}catch ( Exception e )
}
return Integer.parseInt(num);
}
public static String getDato (int i, String dato){
String valor = "";
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conexion = DriverManager.getConnection("jdbc:odbc:Datos_acces o");
Statement st = conexion.createStatement();
{
System.out.println("No hay datos para la busqueda");
}
return valor;
}
@Parameters
// Se crea un array que contendra los datos para ejecutar la prueba.
ResultSet rs = st.executeQuery("select "+dato+" from [Hoja1$] where user_id="+i);
while ( rs.next()){
valor = rs.getObject(1).toString();
}
conexion.close();
}
catch ( Exception e )
public static String[][] getDatosAcceso(){
int numUser = getnumUsuarios();
//System.out.println("hola");
String [][] datos=null ;
if (numUser <=0){
System.out.println("El fichero no tiene datos de acceso a la intranet");
}
else {
//se crea un array bidimensional donde la primera columna serán los ususarios
//y la segunda las contraseñas
datos = new String [numUser][2];
int indiceArray = 0;
while ( indiceArray < datos.length){
datos [indiceArray][0]= getDato (indiceArray+1,"usuarios");
datos [indiceArray][1]= getDato (indiceArray+1,"passwords");
indiceArray++;
}
}
return datos;
}
@Test
public void testLogadoBasicoReusable() throws Exception {
DefaultSelenium selenium = new DefaultSelenium("localhost", 4444, "*firefox", "<aquí iría la URL>");
selenium.start();
String [][] datos = getDatosAcceso();
System.out.println(datos [0][0]);
int i = 0;
while ( i< datos.length){
selenium.windowMaximize();
selenium.open("http://intranet.mtp.es/");
selenium.selectFrame("sup");
selenium.type("name=email", datos [i][0]);
selenium.type("name=password",datos [i][1]);
selenium.click("name=Submit");
selenium.waitForPageToLoad("500000");
i++;
}
selenium.stop();
}
  #2 (permalink)  
Antiguo 20/09/2012, 05:53
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: automatización pruebas obtener datos de fichero excel

Lo ideal sería que pusiersa la línea exacta donde da el error (la excepción suele indicarlo). En esa línea estás intentando meter un String en un sitio que espera una List.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 20/09/2012, 08:55
 
Fecha de Ingreso: septiembre-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: automatización pruebas obtener datos de fichero excel

Hola,

Pongo la traza que sale en la excepción:



java.lang.ClassCastException: [[Ljava.lang.String; cannot be cast to java.util.List
at org.junit.runners.Parameterized.getParametersList( Parameterized.java:149)
at org.junit.runners.Parameterized.<init>(Parameteriz ed.java:135)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newI nstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.junit.internal.builders.AnnotatedBuilder.build Runner(AnnotatedBuilder.java:31)
at org.junit.internal.builders.AnnotatedBuilder.runne rForClass(AnnotatedBuilder.java:24)
at org.junit.runners.model.RunnerBuilder.safeRunnerFo rClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitie sBuilder.runnerForClass(AllDefaultPossibilitiesBui lder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerFo rClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner (ClassRequest.java:24)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestR eference.<init>(JUnit4TestReference.java:33)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestC lassReference.<init>(JUnit4TestClassReference.java :25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestL oader.createTest(JUnit4TestLoader.java:48)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestL oader.loadTests(JUnit4TestLoader.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRu nner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRu nner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRu nner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRu nner.main(RemoteTestRunner.java:197)
  #4 (permalink)  
Antiguo 20/09/2012, 11:05
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: automatización pruebas obtener datos de fichero excel

Buenas:

Por lo de junit y selenium me da la impresion de que te falla en algun test automatico. La traza de la excepcion parece indicar que uno de los parametros que estas pasando para alguno de los test es un string, mientras que el test espera una list. Revisa que test falla y lo s parametros que le estas pasando.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: automatización, clase, excel, fichero, pruebas, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:19.