Buenas, soy nueva en el grupo y un poco junior en sistemas embebidos también. Me empiezo a dedicar en serio y trabajando con herramientas profesionales que desconocía o todavía no domino.
He visto que por aquí alguien habló de este framework para test unitario de código y que puede haber quienes tengan más conocimiento o conceptos más claros que yo al respecto.
No sé si estoy en el lugar del foro adecuado, si existe un tema para presentarse a la comunidad etc, así que ruego me indiquen si estoy haciendo algo mal.
No llevo mucho haciendo tests y día a día aprendo algo más que el anterior. Ahora me encuentro ante un conflicto entre el test de un driver y su driver cuando ejecuto el test. Sé cuál es la fuente de conflicto y por qué sucede (un parámetro que no es el esperado). Todos los libros y ejemplos consultados no especifican si aquello que trato de hacer en el mundo de los tests se puede hacer o no. Tengo la ligera sospecha que no hay alternativa y por tanto debe subsanarse modificando la arquitectura de la fuente. Básicamente mi intuición es esta por la información que he podido consultar. Por la omisión de casos como el que pretendo resolver, interpreto que quizás esté "prohibido". Pero quiero asegurarme primero que realmente no haya herramientas en cpputest para hacerlo. Ya que a priori no me parecería tan extraño que en un código fuente modifique una variable de entrada en una función, variable tratada, que más tarde (antes de salir de dicha función) pasará como argumento de una llamada a otra función de nivel inferior (llamada a una función dentro de una función). O tal vez no sea tan "normal" a la hora de hacer una buena y correcta arquitectura.
Me encuentro que no puedo pasar la dirección de un vector (o digamos variable X) desde el código fuente a su código test (para usarla de parámetro de entrada en una función mockeada). Existe alguna forma de compartir el valor de una dirección de una variable modificada en un driver.c y llevarla como parametro a una función mockeada dentro de su test, ej:
Driver.c:
..
void init(*structinit)
{ uint8_t X = 0;
..
..
X = a + b; //supongamos q a y b son otras operaciones tratadas con mascaras y algunas mas complejas operaciones
...
...
}
..
TEST Drivertest.c:
{
...
(mock().expectonecall("funcion").withParameter("pcbuffer",&X);
...
}
Digamos que para compilar me veo obligada a declarar X también en el test. Aquí es donde empieza la ambigüedad. Por que tengo dos posiciones de memoria diferentes para referirme al mismo parámetro. Es cuando se queja el test. Porque las direcciones de X en la función mock y la de la llamada equivalente del driver.c jamás coincidirán, se han creado dos ubicaciones en lugar de una (está claro).
Si alguien es tan amable de darme su punto de vista, opinión tanto en la arquitectura que planteo como en uso de tests o rectificarme estaré encantada y muy agradecida.