Tôi đã tạo một bộ thử nghiệm có tên là saru (http://github.com/squishyhumans/saru) cho mã riêng của mình. Mã được cấp phép BSD của nó. Tôi đã phát triển nó vì tôi không thích một số tính năng của các bộ thử nghiệm khác. Nó không được sử dụng rộng rãi, nhưng tôi đã sử dụng nó trên một số dự án thương mại trải rộng trên hai công ty.
- Tôi không thích tất cả các thử nghiệm của mình được biên dịch thành một nhị phân. Lý do của tôi cho điều này là nếu biên dịch thất bại tất cả các bài kiểm tra thất bại, nếu một thử nghiệm không hành vi không xác định đầu ra chương trình là không xác định.
- Tôi muốn kiểm soát những thử nghiệm nào chạy. Tôi muốn có thể nhóm các bài kiểm tra và chạy các tập con.
- Tôi muốn lỗi biên dịch của thử nghiệm được báo cáo là lỗi kiểm tra và không dừng tất cả các thử nghiệm đang chạy.
- Tôi muốn để có thể chạy thử nghiệm từ nhiều ngôn ngữ khác nhau
- Tôi muốn có một hệ thống đủ linh hoạt mà tôi có thể chạy thử nghiệm cụ thể theo valgrind (chưa có trong Saru :()
Vì vậy, Saru địa chỉ nhất các tính năng này. trọng tâm của nó là vào khả năng chạy một bộ các bài kiểm tra viết bằng các ngôn ngữ khác nhau. với kích cỡ thử nghiệm tối thiểu. đây là nhỏ nhất (không) C++ kiểm tra
//SARU : dummy dummy
int main() { return (1==2)?0:1; }
Tất cả Saru thực sự quan tâm abou t là giá trị trả về của nhị phân mà nó biên dịch. Sau đó, nó phân tích đầu ra để xác định những thử nghiệm nào không thành công và cứ như vậy. Nó có tiêu đề để làm việc với C++ một chút đẹp hơn so với ví dụ nhỏ trên:
//SARU : dummy dummy
#include "MyStruct.h"
#include "saru_cxx.h"
class Fixture
{
MyStruct s_;
Fixture() : s_() {}
void test_A_is_B()
{
SARU_ASSERT_EQUAL(s_.A(), s_.B());
}
void test_C_is_7()
{
SARU_ASSERT_EQUAL(7, s_.C());
}
};
int main()
{
saru::TestLogger logger;
SARU_TEST(Fixture:: test_A_is_B, logger);
SARU_TEST(Fixture:: test_C_is_7, logger);
logger.printSummary();
return logger.allOK()?0:1;
}
Hoặc nếu bạn không thích cách tiêu đề của nó C++ làm việc nó sẽ có thể tích hợp với thư viện unittesting khác với khó khăn tối thiểu .
Nhưng nó cũng sẽ chạy thử nghiệm được viết bằng PHP & python. Vì vậy, bạn có thể thiết lập các bài kiểm tra chức năng đầy đủ với saru. Hoặc bạn có thể chạy một cái gì đó như lint trên mã của bạn như là một phần của bộ thử nghiệm.
Nguồn
2010-01-11 08:35:32
Bạn có muốn hỗ trợ cho các đối tượng giả không? –
Related: http://stackoverflow.com/questions/91384/unit-testing-for-c-code-tools-and-methodology http://stackoverflow.com/questions/13699/choosing-ac-unit-testing- tool-framework http://stackoverflow.com/questions/3150/how-to-set-up-unit-testing-for-visual-studio-c http://stackoverflow.com/questions/387272/unit-testing- in-c và có thể là những người khác –
Bản sao của http://stackoverflow.com/questions/242926/comparison-of-c-unit-test-frameworks – dmckee