2011-12-15 7 views
5

Tratando de probar mi proyecto C en NetBeans, las pruebas no se terminan nunca, mientras que la salida es:netbeans Cunit pruebas de los casos no se terminan nunca

Test: testFileOne ...passed Test: testFileTwo ...passed 

Run Summary: Type Total Ran Passed Failed Inactive 
       suites  1  1 n/a  0  0 
       tests  2  2  2  0  0 
       asserts  8  8  8  0  n/a 

Elapsed time = 0.000 seconds 

Incluso si parece completa, la barra de progreso sigue brillando en el valor de 0,0 %

Los casos de prueba son todas como:

void testMethod() { 
    CU_ASSERT(1 == 1); 
    //other lines of code.. 
    CU_ASSERT(0 == 0); 
} 

con más de un CU_ASSERT para cada función. Algún comportamiento con el código de prueba generado automáticamente por NetBeans.

El comando

make test 

desde la línea de comandos funciona como un encanto y termina sin ningún problema.

¿Alguien ha encontrado este problema antes? cualquier forma de resolverlo sin dañar mi computadora portátil? Gracias de antemano por cada comentario.

+0

Sólo una conjetura salvaje: se puede empezar cualquier hilo en sus casos de prueba que no terminan cuando el la prueba en sí misma termina regularmente? – DerTroglodyt

+0

Agregue printf's para seguir la ejecución y ver que la prueba de unidad realmente sale. –

Respuesta

1

Puede usar un depurador (por ejemplo, gdb) para rastrear lo que sucede.

Esto requerirá que se agreguen indicadores de depuración a su código cunit. Suponiendo que está usando gcc, esta será la bandera -g.

Después de compilar con los indicadores de depuración, puede simplemente iniciar el binario de prueba con el depurador, de la misma forma en que debe depurar un programa normal.

1

Parece que Netbeans requiere una cierta directiva para detener el Test Suite y esto es exactamente printf("%%SUITE_FINISHED%% time=0\n");. Así es como la prueba debe ser similar (ya sea que esté utilizando la vainilla C llana o alguna biblioteca como CUnit):

#include <stdio.h> 
#include <stdlib.h> 

void test1() { 
    // do your stuff 
} 

int main(int argc, char** argv) { 
    printf("%%SUITE_STARTING%% mysimpletest\n"); 
    printf("%%SUITE_STARTED%%\n"); 

    printf("%%TEST_STARTED%% test1 (mysimpletest)\n"); 
    test1(); 
    printf("%%TEST_FINISHED%% time=0 test1 (mysimpletest) \n"); 

    printf("%%SUITE_FINISHED%% time=0\n"); 

    return (EXIT_SUCCESS); 
} 
Cuestiones relacionadas