PHPunit - Test de unidad.

Saludos.
Con mi equipo estamos tratando de comenzar a utilizar test de unidad con PHPunit, que toba 2.7.4 trae incorporado.
Utilizamos: /bin/toba test automaticos -i desarrollo -p
Tenemos creada la carpeta en /php/testing y dentro tenemos las clases con sus funciones para las pruebas.
El problema está en que cuando queremos probar ciertas funcionalidades, el cn tiene que cargar una dependencia -datos relacion- y genera conflicto.

exception 'toba_error_def' with message 'OBJETO [cargar_dependencia]: No EXISTE una dependencia asociada al indice [drPersonaCargos].' in /usr/local/siu/toba_2.7.4/php/nucleo/componentes/toba_componente.php:586
 Stack trace:
 #0 /usr/local/siu/toba_2.7.4/php/nucleo/componentes/toba_componente.php(530): toba_componente->cargar_dependencia('drPersonaCargos')
 #1 /usr/local/siu/toba_2.7.4/php/nucleo/componentes/toba_componente.php(541): toba_componente->dependencia('drPersonaCargos', true)
 #2 /usr/local/siu/toba_2.7.4/proyectos/[b]<proyNomb>[/b]/php/inicio/cnInicio.php(35): toba_componente->dep('drPersonaCargos')
 #3 /usr/local/siu/toba_2.7.4/proyectos/[b]<proyNomb>[/b]/php/inicio/cnInicio.php(99): cnInicio->cargarDependencias(Array)
 #4 /usr/local/siu/toba_2.7.4/proyectos/[b]<proyNomb>[/b]/php/testing/test_inicio/test_cnInicio.php(31): cnInicio->inicializarSession()
 #5 /usr/local/siu/toba_2.7.4/php/3ros/simpletest/runner.php(59): test_cnInicio->test_getDatosPersona()
 #6 /usr/local/siu/toba_2.7.4/php/3ros/simpletest/runner.php(99): SimpleInvoker->invoke('test_getDatosPe...')
 #7 /usr/local/siu/toba_2.7.4/php/3ros/simpletest/runner.php(128): SimpleInvokerDecorator->invoke('test_getDatosPe...')
 #8 /usr/local/siu/toba_2.7.4/php/modelo/lib/testing_unitario/toba_test_runner.php(28): SimpleErrorTrappingInvoker->invoke('test_getDatosPe...')
 #9 /usr/local/siu/toba_2.7.4/php/3ros/simpletest/test_case.php(96): toba_test_runner->run()
 #10 /usr/local/siu/toba_2.7.4/php/modelo/lib/testing_unitario/toba_test.php(49): SimpleTestCase->run(Object(TextReporter))
 #11 /usr/local/siu/toba_2.7.4/php/modelo/lib/testing_unitario/toba_test_grupo_casos.php(37): toba_test->run(Object(TextReporter))
 #12 /usr/local/siu/toba_2.7.4/php/consola/comandos/comando_test.php(98): toba_test_grupo_casos->run(Object(TextReporter))
 #13 /usr/local/siu/toba_2.7.4/php/consola/comando.php(60): comando_test->opcion__automaticos(NULL)
 #14 /usr/local/siu/toba_2.7.4/php/consola/comando.php(54): comando->ejecutar_opcion('opcion__automat...', NULL)
 #15 /usr/local/siu/toba_2.7.4/php/consola/consola.php(74): comando->procesar()
 #16 /usr/local/siu/toba_2.7.4/php/consola/consola.php(51): consola->invocar_comando('test', Array)
 #17 /usr/local/siu/toba_2.7.4/php/consola/run.php(32): consola->run(Array)
 #18 /usr/local/siu/toba_2.7.4/bin/toba(16): include('/usr/local/siu/...')
 #19 {main}

La verdad es que estamos intentando de adivinar cómo funciona. ¿Tendrán algún documento sobre cómo hacer testing del desarrollo bajo toba?

Desde ya, muchas gracias.

Hola Ramiro,

bien por la iniciativa con respecto al testing, por otro lado aclararte que Toba realiza el mismo via Simpletest… no PHPUnit. Algo mas de info acerca de como lo encaramos nosotros esta aca

De lo que comentas, pareciera que queres hacer testing funcional que incluya la interface, con lo cual yo apuntaria mas hacia Selenium, tambien los podes correr via Toba… pero necesitas tener instalador PHPWebDriver para ello, ademas de Selenium server.

Saludos

Hola, gracias por la respuesta.
La idea es, como te menciono arriba, hacer test de unidad sobre la capa de negocios. El problema estaría en la carga de los componentes necesarios del cn (dependencias, como por ejemplo un datos relación) para trabajar.

Hola Ramiro,

los objetos los podes ir instanciando con toba_constructor::get_runtime(), luego tenes que hacer la asociacion correspondiente para que el CN los vea.

De todas maneras, la idea es que el CN te desacople toda la parte de interface de la parte de negocio… en tu caso es la parte de negocio, por eso te decia que me parecia mas logico hacer un testeo completo con Selenium. Igual con lo que te mencionaba antes calculo que vas a poder organizar los objetos para lo que necesitas.

Saludos

Buenas!

A un par de años de haber abandonado la idea, por fuerza mayor, estamos por retomar; hoy día, con toba 3[.1] necesitaría saber cómo está el tema de testeo.

Viendo, por ejemplo, en el proyecto Diaguita, tenemos la carpeta php/testing donde, dentro, encontramos una nueva carpeta llamada selenium. Además, encontré este enlace:https://repositorio.siu.edu.ar/trac/toba/wiki/Referencia/Testing pero que no dice mucho.

¿Existe alguna guía sobre cómo realizar test con toba?

Hola Ramiro,

si te fijas en esta misma seccion se fueron abriendo hilos sobre testing en Toba.
Por ejemplo: Testing con Selenium
o Testear proyectos toba

Si queres podemos ver alguna particularidad que tenga el proyecto, de todas maneras la idea original se sigue manteniendo.
Por otra parte, por que no usar Toba 3.2 directamente?, que los retiene en la rama 3.1?

Saludos

Ricardo, muchas gracias por la respuesta.

Voy a pegar una mirada a esos enlaces.