Testear proyectos toba

Buenas tardes,

alguien me puede guiar de como testear los proyectos creados en toba ? NO encuentro documentación sobre el tema

de antemano mil gracias

Cordial Saludo.

Richard, buen día

Me dejaste colgado con la duda.

Gracias y cordial saludo

Hola Jhon,

es verdad, mis disculpas sali de vacaciones y luego me olvide por completo del post.
Podes leer algo aqui y aqui, tambien esta la opcion de llevar adelante test utilizando Selenium.

Saludos

Ingeniero,

revisando y estaré preguntando

Gracias , Cordial Saludo

Buenas, teniamos un proyecto de hace un par de años que tenia unos Tests. Al dia de hoy con Toba 3 no funcionan. El test tiene la siguiente forma:



class test_example extends PHPUnit_Extensions_SeleniumTestCase
{
    function setUp() {
        ...
    }

    function tearDown() {
        ....
     }

    function __construct()
    {
        ....
    }
}


Al ejecutar toba test automaticos -p stock obtengo el error:


$ toba test automaticos -p stock
PHP Fatal error:  Uncaught Error: Class 'PHPUnit_Extensions_SeleniumTestCase' not found in /home/tomas/workspace/almacenes/php/testing/test_example/test_example.php:3
Stack trace:
#0 /home/tomas/workspace/almacenes/vendor/siu-toba/framework/php/modelo/lib/testing_unitario/toba_test_lista_casos.php(161): require_once()
#1 /home/tomas/workspace/almacenes/vendor/siu-toba/framework/php/modelo/lib/testing_unitario/toba_test_lista_casos.php(109): toba_test_lista_casos::get_archivos(Resource id #218, '/home/tomas/wor...')
#2 /home/tomas/workspace/almacenes/vendor/siu-toba/framework/php/consola/comandos/comando_test.php(74): toba_test_lista_casos::get_casos()
#3 /home/tomas/workspace/almacenes/vendor/siu-toba/framework/php/consola/comando.php(102): comando_test->opcion__automaticos(NULL)
#4 /home/tomas/workspace/almacenes/vendor/siu-toba/framework/php/consola/comando.php(90): comando->ejecutar_opcion('opcion__automat...', NULL)
#5 /home/tomas/workspace/almacenes/vendor/siu-toba/framework/php/consola/consola.php(78): comando->procesar( in /home/tomas/workspace/almacenes/php/testing/test_example/test_example.php on line 3

Revisando un poco en el history del framework, encuentro que todo eso fue eliminado completamente, si entiendo bien, en favor de usar la librería SimpleTest.

Cuestión que probé cambiar el extends por toba_test y también por test_toba y sigo obteniendo los mismos errores (Class not found). Por alguno de los links encontre que era necesario cargar el proyecto toba_testing, me parecio que eso no era necesario, pero al querer seguir los pasos de la pagina, el paso 1 se hizo correctamente pero el paso 2 falló (creo que proyecto instalar es un comando deprecado en algún momento, entonces no se si la documentación esa es vieja).

Entonces, teniendo el directorio <proyecto>/php/testing/test_example/ y dentro archivos como test_example.php, ¿que mas hay que hacer para que toba ejecute los tests?

Hola Tomas,

la eliminacion se debio a que se movio la instalacion de la mayor cantidad de librerias posibles hacia composer (solo quedaron aquellas que no se podian instalar de dicha forma).

Toba para su parte de testing desde siempre uso Simpletest como base, Selenium era una posibilidad extra y en este caso usas una extension de PHPUnit para hacer el puente entre codigo y Selenium. Lo que estaba dentro de 3ros instalado de forma manual, ahora deberia quedar via composer dentro de vendor.

Cuestión que probé cambiar el extends por `toba_test` y también por `test_toba` y sigo obteniendo los mismos errores (Class not found). Por alguno de los links [url=https://repositorio.siu.edu.ar/trac/toba/wiki/Proyectos/TobaTesting]encontre que era necesario[/url] cargar el proyecto `toba_testing`, me parecio que eso no era necesario, pero al querer seguir los pasos de la pagina, el paso 1 se hizo correctamente pero el paso 2 falló (creo que proyecto instalar es un comando deprecado en algún momento, entonces no se si la documentación esa es vieja).
Tene en cuenta que con las diferentes versiones los nombres de las clases de PHPUnit fueron cambiando, sobre todo con la incorporacion de namespaces... por lo que puede ser que necesites modificar el nombre de la clase de la que heredan los casos de test para que sea encontrada via el autoload de composer.

Otra opcion, es que esa extension se haya eliminado de la base de PHPUnit y requiera que agregues alguna linea extra en composer.json para reactivarla.

No es necesario tener cargado el proyecto toba_testing para poder correr los test, en su momento el mismo servia a modo de ejemplo por eso se recomendaba cargarlo.

Entonces, teniendo el directorio `/php/testing/test_example/` y dentro archivos como `test_example.php`, ¿que mas hay que hacer para que toba ejecute los tests?
No se puntualmente en que version de Toba estas.. pero en la 3.2 se incorporaron test a toba_usuarios que se ejecutan via Selenium, por ahi te sirve de ejemplo (igual no usan PHPUnit).

Saludos

Ok, selenium era el ejemplo que puse, pero queria hacer test de forma generica.

Tene en cuenta que con las diferentes versiones los nombres de las clases de PHPUnit fueron cambiando, sobre todo con la incorporacion de namespaces... por lo que puede ser que necesites modificar el nombre de la clase de la que heredan los casos de test para que sea encontrada via el autoload de composer.

Otra opcion, es que esa extension se haya eliminado de la base de PHPUnit y requiera que agregues alguna linea extra en composer.json para reactivarla.

Ok, estoy en Toba 3.1.6. Cual es el objeto del cual hacer extender los casos de Testing? Cual es el comando para ejecutarlo?

Hola Tomas,

Tus casos de test deberian extender de la clase toba_test, en el caso de querer scriptear algo para Selenium WD deberian extender de toba_test_selenium.
Si queres usar PHPUnit tendrias que crearte una clase que implemente los mismos metodos que toba_test y extender el comando que lanza los mismos para que tome esta extension.

El comando para ejecutarlos es toba test automaticos -p proyecto y ahi seleccionas cuales queres ejecutar.

Saludos

Perfecto, cuando ejecuto toba test automaticos -p proyecto , obtengo el siguiente error:


PHP Fatal error:  Uncaught Error: Class 'UnitTestCase' not found in /home/user/proyecto/vendor/siu-toba/framework/php/modelo/lib/testing_unitario/toba_test.php:2
Stack trace:
#0 /home/user/proyecto/vendor/siu-toba/framework/php/toba_autoload.php(22): require_once()
#1 /home/user/proyecto/vendor/siu-toba/framework/php/nucleo/toba_nucleo.php(522): toba_autoload::cargar('toba_test')
#2 [internal function]: toba_nucleo::cargador_clases('toba_test')
#3 /home/user/proyecto/php/testing/test_example/test_example.php(3): spl_autoload_call('toba_test')
#4 /home/user/proyecto/vendor/siu-toba/framework/php/modelo/lib/testing_unitario/toba_test_lista_casos.php(161): require_once('/home/user/pro...')
#5 /home/user/proyecto/vendor/siu-toba/framework/php/modelo/lib/testing_unitario/toba_test_lista_casos.php(109): toba_test_lista_casos::get_archivos(Resource id #218, '/home/user/pro...')
#6 /home/user/proyecto/vendor/siu-toba/framework/php/consola/comandos/co in /home/user/proyecto/vendor/siu-toba/framework/php/modelo/lib/testing_unitario/toba_test.php on line 2

Obviamente, el caso de test extiende de toba_test.

Hola Tomas,

bien, por lo que veo composer no esta instalando la dependencia de desarrollo de toba (quizas deberia agregarlo al suggest)… proba agregando esta linea en el composer.json y haciendo un update.


"require-dev": {
        "simpletest/simpletest": "~1.1"
    }

Con eso te deberia bajar la clase UnitTest que esta faltando para poder lanzar los test_case via el comando.

Saludos

Incluí en require-dev dicha lib y salio andando (tuve que hacer composer update). Estaria que quede como dependencia?

Hola Tomas,

Esta en el require_dev de Toba, el tema es que quizas habria que ponerlo ademas en el suggest para que aquellos que lo necesitan lo agreguen.
Meterlo en el require implica que tambien se baja para una instalacion de produccion, mi idea es ir dejando la instalacion --no-dev lo mas pequeña posible y el resto se puede agregar para dev.

Saludos