Có khung kiểm thử đơn vị nào cho C như JUnit và Nunit cho java và .NET không? Hoặc làm cách nào để kiểm tra một đoạn mã được viết bằng C cho các kịch bản khác nhau?khung kiểm tra đơn vị cho C
Cảm ơn trước ......
Có khung kiểm thử đơn vị nào cho C như JUnit và Nunit cho java và .NET không? Hoặc làm cách nào để kiểm tra một đoạn mã được viết bằng C cho các kịch bản khác nhau?khung kiểm tra đơn vị cho C
Cảm ơn trước ......
Glib đã được xây dựng trong khuôn khổ kiểm tra: http://library.gnome.org/devel/glib/stable/glib-Testing.html
Tôi vẫn còn mới để các khuôn khổ kiểm tra đơn vị , nhưng gần đây tôi đã thử cut, check và cunit. Điều này dường như chống lại một số kinh nghiệm của người khác (xem Unit Testing C Code cho một câu hỏi trước), nhưng tôi thấy cunit dễ nhất để có được đi. Điều này cũng có vẻ là một lựa chọn tốt cho tôi, như cunit có nghĩa vụ phải phù hợp tốt với các khuôn khổ xunit khác và tôi chuyển đổi ngôn ngữ hơi thường xuyên.
Tôi đã rất hài lòng với CuTest lần cuối cùng tôi cần để kiểm tra đơn vị C. Chỉ có một cặp .c/.h, đi kèm với một tập lệnh shell nhỏ tự động tìm tất cả các bài kiểm tra để xây dựng bộ thử nghiệm và xác nhận lỗi hoàn toàn không hữu ích.
Dưới đây là một ví dụ về một trong các bài kiểm tra của tôi:
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"));
}
Chỗ ngồi nhất là bản thân tôi đã viết cho bản thân và nguồn mở. Mục đích là đơn giản và có cú pháp rõ ràng.
http://code.google.com/p/seatest/
một loại xét nghiệm đơn giản cơ bản sẽ là ...
#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;
}
Ngoài ra còn có cspec, mà là một rất đơn giản và dễ sử dụng khuôn khổ BDD.
Nếu bạn đã từng sử dụng một cái gì đó giống như rspec hoặc mocha nó sẽ là tầm thường để sử dụng. Nó thậm chí không yêu cầu bạn viết một hàm main
.
Dưới đây là một ví dụ:
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 để bình luận bdhar của. Nếu bạn gặp khó khăn khi tìm kiếm SO/Google, thì kiểm tra đơn vị là ít nhất của bạn lo lắng :-) – richsage
Ít nhất hai bản sao phải trong các liên kết có liên quan ... – dmckee