function generar_layout() { $selecciones = $this->controlador->get_selecciones(); echo "<div style='background-color: white; border: 1px solid black; text-align: left; padding: 15px'>"; try { //Se construye un suite por categoria que tenga test seleccionados foreach (toba_test_lista_casos::get_categorias() as $categoria) { $test = new GroupTest($categoria['nombre']); $hay_uno = false; foreach (toba_test_lista_casos::get_casos() as $caso) { if ($caso['categoria'] == $categoria['id'] && in_array($caso['id'], $selecciones['casos'])) { $hay_uno = true; require_once $caso['archivo']; $test->addTestCase(new $caso['id']($caso['nombre'])); } } if ($hay_uno) { //--- COBERTURA DE CODIGO (OPCIONAL) ---- if (function_exists('xdebug_start_code_coverage')) { xdebug_start_code_coverage(); } //------- $test->run(new toba_test_reporter()); //--- COBERTURA DE CODIGO (OPCIONAL) ---- $arch = 'PHPUnit2/Util/CodeCoverage/Renderer.php'; $existe = toba_manejador_archivos::existe_archivo_en_path($arch); if (function_exists('xdebug_start_code_coverage') && $existe) { require_once $arch; $cubiertos = xdebug_get_code_coverage(); //Se limpian las referencias a simpletest y a librerias de testing en gral. $archivos = array(); foreach (array_keys($cubiertos) as $archivo) { if (!strpos($archivo, 'simpletest') && !strpos($archivo, 'PHPUnit') && !strpos($archivo, 'testing_automatico/') && !strpos($archivo, '/test_')) { $archivos[$archivo] = $cubiertos[$archivo]; } } $cc = PHPUnit2_Util_CodeCoverage_Renderer::factory('HTML', array('tests' => $archivos)); $path_temp = toba::proyecto()->get_path_temp_www(); $salida = $path_temp['real'] . '/cobertura.html'; $cc->renderToFile($salida); echo "<a href='{$path_temp['browser']}/cobertura.html' target='_blank'>Ver cobertura de código</a>"; } //------- } } } catch (Exception $e) { if (method_exists($e, 'mensaje_web')) { echo ei_mensaje($e->mensaje_web(), 'error'); } else { echo $e; } } echo '</div><br>'; $this->dep('lista_archivos')->generar_html(); }
/** * Ejecuta la batería de test automáticos de un proyecto * @consola_parametros Parámetros: -p Proyecto [-c Cat] [-t Caso] */ function opcion__automaticos() { $path_autoload_sel = '/php/testing/selenium/test_selenium_autoload.php'; require_once 'modelo/lib/testing_unitario/toba_test_lista_casos.php'; require_once toba_dir() . '/php/3ros/simpletest/unit_tester.php'; require_once toba_dir() . '/php/3ros/simpletest/reporter.php'; $param = $this->get_parametros(); $proyecto = isset($param['-p']) ? $param['-p'] : $this->get_id_proyecto_actual(true); $instancia = isset($param['-i']) ? $param['-i'] : $this->get_id_instancia_actual(true); toba_nucleo::instancia()->iniciar_contexto_desde_consola($instancia, $proyecto); $path = $this->get_instancia()->get_path_proyecto($proyecto); if (file_exists($path . $path_autoload_sel)) { require_once $path . $path_autoload_sel; spl_autoload_register(array('test_selenium_autoload', 'cargar')); } toba_test_lista_casos::$proyecto = $proyecto; toba_test_lista_casos::$instancia = $instancia; //Selecciono una categoria if (isset($param['-c'])) { $seleccionados = toba_test_lista_casos::get_casos($param['-c']); } //Seleccion de un test particular if (isset($param['-t'])) { $seleccionados = toba_test_lista_casos::get_casos(); $particular = false; foreach ($seleccionados as $caso) { if ($caso['id'] == $param["-t"]) { $particular = $caso; } } if ($particular) { $seleccionados = array($particular); } else { $seleccionados = array(); } } elseif (!isset($param['-c'])) { //Ni categoria ni test, elijo de una lista presentada $seleccionados = toba_test_lista_casos::get_casos(); $lista = array(); $klaves = array_keys($seleccionados); foreach ($seleccionados as $caso) { $lista[$caso['id']] = $caso['nombre']; } $elegidos = $this->consola->dialogo_lista_opciones($lista, 'Seleccione el caso de test', true, null, false); foreach ($klaves as $klave) { if (!in_array($seleccionados[$klave]['id'], $elegidos)) { unset($seleccionados[$klave]); } } } $resultado = null; try { $separar_casos = isset($param["-l"]) ? true : false; $separar_pruebas = isset($param["-l"]) ? true : false; $test = new toba_test_grupo_casos('Casos de TEST', $separar_casos, $separar_pruebas); foreach ($seleccionados as $caso) { require_once $caso['archivo']; $test->addTestCase(new $caso['id']($caso['nombre'])); } //Termina la ejecución con 0 o 1 para que pueda comunicarse con al consola $resultado = $test->run(new TextReporter()); } catch (Exception $e) { if (method_exists($e, 'mensaje_consola')) { $this->consola->mensaje($e->mensaje_consola()); } else { $this->consola->mensaje($e); } $resultado = 1; } //Guardar LOGS? if (isset($param["-l"])) { toba::logger()->debug('Tiempo utilizado: ' . toba::cronometro()->tiempo_acumulado() . ' seg.'); toba::logger()->guardar(); } exit(intval($resultado)); }
static function set_tipo($tipo_test) { self::$tipo = $tipo_test; }