Есть ли какой-либо модульный модуль тестирования для C, например, JUnit и Nunit для java и .NET? Или как мы тестируем фрагмент кода, написанный на C для разных сценариев?единый модуль тестирования для C
Заранее спасибо ......
Есть ли какой-либо модульный модуль тестирования для C, например, JUnit и Nunit для java и .NET? Или как мы тестируем фрагмент кода, написанный на C для разных сценариев?единый модуль тестирования для C
Заранее спасибо ......
Glib имеет встроенный в рамках тестирования: http://library.gnome.org/devel/glib/stable/glib-Testing.html
Я еще новичок в единичных рамках тестирования , но я недавно попробовал cut, check и cunit. Это, похоже, противоречило опыту других людей (см. Unit Testing C Code для предыдущего вопроса), но я нашел, что cunit легче всего начать. Это также кажется хорошим выбором для меня, так как cunit должен хорошо сочетаться с другими структурами xunit, и я часто меняю языки.
Я был очень доволен CuTest в последний раз, когда мне нужно было выполнить единицу теста C. Это только одна .c/.h пара, поставляется с небольшим сценарием оболочки, который автоматически находит все тесты для сборки набора тестов и утверждения ошибки не совсем бесполезны.
Вот пример одного из моих тестов:
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 - это тот, который я написал для себя и открывал. Цель должна быть простой и иметь чистый синтаксис.
http://code.google.com/p/seatest/
своего рода основного простого тест будет ...
#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;
}
Существует также cspec, который является очень простым и легким в использовании рамки BDD.
Если вы когда-либо использовали что-то вроде RSpec или мокко это будет тривиально использовать. Это даже не требует, чтобы вы написали функцию main
.
Вот пример:
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 к комментарию bdhar в. Если у вас возникли проблемы с поиском SO/Google, то модульные тесты - это наименьшее из ваших забот :-) – richsage
Как минимум два дубликата прямо в соответствующих ссылках ... – dmckee