¿Existe algún marco de pruebas unitarias para C como JUnit y Nunit para java y .NET? ¿O cómo probamos un fragmento de código escrito en C para diferentes escenarios?marco de pruebas unitarias para C
Gracias de antemano ......
¿Existe algún marco de pruebas unitarias para C como JUnit y Nunit para java y .NET? ¿O cómo probamos un fragmento de código escrito en C para diferentes escenarios?marco de pruebas unitarias para C
Gracias de antemano ......
Glib ha incorporado en el marco de pruebas: http://library.gnome.org/devel/glib/stable/glib-Testing.html
todavía soy nuevo en frameworks de pruebas unitarias , pero recientemente probé cut, check y cunit. Esto pareció contrarrestar las experiencias de otros (ver Unit Testing C Code para una pregunta anterior), pero encontré cunit la más fácil de poner en marcha. Esto también parece una buena opción para mí, ya que se supone que cunit se alinea bien con los otros marcos de xunit y cambio los idiomas con bastante frecuencia.
Estuve muy contento con CuTest la última vez que necesité probar la unidad C. Se trata de un solo par .c/.h, viene con un pequeño script de shell que encuentra automáticamente todas las pruebas para construir el conjunto de pruebas y la afirmación los errores no son del todo inútiles.
Aquí es un ejemplo de una de mis pruebas:
void TestBadPaths(CuTest *tc) {
// Directory doesn't exist
char *path = (char *)"/foo/bar";
CuAssertPtrEquals(tc, NULL, searchpath(path, "sh"));
// A binary which isn't found
path = (char *)"/bin";
CuAssertPtrEquals(tc, NULL, searchpath(path, "foobar"));
}
Seatest es la que escribí para mí y de código abierto. El objetivo es ser simple y tener una sintaxis limpia.
http://code.google.com/p/seatest/
una especie de prueba simple básica sería ...
#include "seatest.h"
//
// create a test...
//
void test_hello_world()
{
char *s = "hello world!";
assert_string_equal("hello world!", s);
assert_string_contains("hello", s);
assert_string_doesnt_contain("goodbye", s);
assert_string_ends_with("!", s);
assert_string_starts_with("hell", s);
}
//
// put the test into a fixture...
//
void test_fixture_hello(void)
{
test_fixture_start();
run_test(test_hello_world);
test_fixture_end();
}
//
// put the fixture into a suite...
//
void all_tests(void)
{
test_fixture_hello();
}
//
// run the suite!
//
int main(int argc, char** argv)
{
run_tests(all_tests);
return 0;
}
Existe también cspec, que es una muy simple y fácil de usar marco de BDD.
Si ha usado alguna vez algo así como rspec o moka será un uso trivial. Ni siquiera requiere que escriba una función main
.
Aquí se muestra un ejemplo:
context (example) {
describe("Hello world") {
it("true should be true") {
should_bool(true) be equal to(true);
} end
it("true shouldn't be false") {
should_bool(true) not be equal to(false);
} end
it("this test will fail because 10 is not equal to 11") {
should_int(10) be equal to(11);
} end
skip("this test will fail because \"Hello\" is not \"Bye\"") {
should_string("Hello") be equal to("Bye");
} end
} end
}
http://www.google.com/search?q=unit+testing+c – bdhar
1 al comentario de bdhar. Si tiene problemas para buscar SO/Google, las pruebas unitarias son la menor de sus preocupaciones :-) – richsage
Al menos dos duplicados a la derecha en los enlaces relacionados ... – dmckee