Antes que nada, ¿qué quiere decir con pruebas unitarias y pruebas de unidades generadas?
Quiere decir generar un marco, un arnés de prueba o quiere decir generar una prueba con datos y comprobaciones de datos o aserciones que realmente llaman a su código. Y, en este último caso, ¿cómo se genera esa prueba?
Más fundamentalmente, ¿por qué estás haciendo pruebas? ¿Está siguiendo un estándar que requiere cierto nivel de prueba, o simplemente 'está' tratando de reducir el riesgo y el costo en las últimas etapas de desarrollo? O tal vez está construyendo sobre un sistema existente y solo quiere asegurarse de no romper ninguna funcionalidad existente.
Una respuesta anterior mencionó Cantata, recientemente hemos lanzado una nueva versión con un componente llamado 'prueba de línea base'. Esto puede ser justo lo que estás buscando. Creará, para el código C, un conjunto de pruebas unitarias, que contienen casos de prueba que tienen una buena posibilidad de ejercitar completamente cada uno de sus archivos fuente. La herramienta logra esto leyendo su fuente y produciendo un conjunto de pruebas que determinan la ejecución en cada ruta con el objetivo de alcanzar su objetivo de cobertura deseado: declaración del 100%, decisión o incluso cobertura de MC/DC. La intención es "basar" su código fuente como parte del desarrollo continuo de un sistema heredado, o para llenar vacíos de cobertura después de pruebas funcionales o quizás del sistema.
Ver la página web Cantata++ para obtener más información (y evaluaciones gratuitas)
Acabo de mirar Microsoft Pex. Parece generar pruebas de interfaz para el código C#. Tal vez algo similar para C podría ser una gran ventaja? – Henrik
Parece que Pex necesita instrumentar su código para generar los resultados de la prueba. –