crpcut (phát âm là "crap cut") là Compartmented Robust Posix C ++ Unit Tester. Với crpcut đó là dễ dàng để viết bài kiểm tra rằng các khuôn khổ đơn vị thử nghiệm khác không thể quản lý.
Giới thiệu ví dụ:
Một ví dụ kiểm tra các bộ phận của std :: string:
& Nbsp; #include
& Nbsp; #include
& Nbsp; struct apastr // trận đấu để thử nghiệm mosts
& Nbsp; {
& Nbsp; apastr (): s ("apa") {}
& Nbsp; std :: string s;
& Nbsp;};
& Nbsp; TestSuite (cơ bản)
& Nbsp; {
& Nbsp; TEST (default_constr_and_destr)
& Nbsp; {
& Nbsp; std :: string s;
& Nbsp; ASSERT_TRUE (s.empty ());
& Nbsp; ASSERT_EQ (s.length (), 0);
& Nbsp;}
& Nbsp; TEST (constr_from_char_array, apastr,
& Nbsp; DEPENDS_ON (default_constr_and_destr))
& Nbsp; {
& Nbsp; ASSERT_EQ (s.length (), 3UL);
& Nbsp;}
& Nbsp; TEST (tại, apastr,
& Nbsp; DEPENDS_ON (default_constr_and_destr))
& Nbsp; {
& Nbsp; ASSERT_EQ (s.at (1), 'p');
& Nbsp;}
& Nbsp;}
& Nbsp; TestSuite (lỗi, DEPENDS_ON (ALL_TESTS (cơ bản)))
& Nbsp; {
& Nbsp; TEST (at_out_of_range, apastr,
& Nbsp; EXPECT_EXCEPTION (std :: out_of_range))
& Nbsp; {
& Nbsp; s.at (4);
& Nbsp;}
& Nbsp; TEST (index_oper_out_of_range, apastr,
& Nbsp; EXPECT_SIGNAL_DEATH (SIGABRT),
& Nbsp; NO_CORE_FILE)
& Nbsp; {
& Nbsp; s [4];
& Nbsp;}
& Nbsp;}
& Nbsp; int main (int argc, char * argv [])
& Nbsp; {
& Nbsp; return crpcut :: test_case_factory :: run_test (argc, argv);
& Nbsp;}
Kiểm tra những lợi ích tương tự từ được nhóm lại thành các bài kiểm tra-bộ. Test-dãy phòng có thể phụ thuộc vào kiểm tra-bộ khác, có nghĩa rằng các xét nghiệm chứa sẽ chỉ chạy nếu tất cả các bài kiểm tra nó phụ thuộc vào đã hoàn tất thành công. Kết quả có thể được xác nhận bằng cách sử dụng một số ASSERT macro. Các xét nghiệm có thể sử dụng đồ đạc để thể hiện nội dung phổ biến. Các xét nghiệm có thể được dự kiến sẽ thoát bằng ngoại lệ, hoặc chết. Kỳ vọng mà sẽ không gặp lỗi. Tin nhắn trên stderr và stdout là gaught, và bao gồm trong các bản ghi kết quả.
Tại sao crpcut
Quan trọng nhất, nó phải là dễ dàng để viết bài kiểm tra. Với crpcut, bạn tập trung vào cấu trúc bài thi và kiểm tra của bạn logic, không phải trên những giới hạn do môi trường thử nghiệm của bạn.
Với crpcut, mỗi trường hợp thử nghiệm chạy trong tiến trình riêng của nó và thư mục làm việc của riêng mình. Nếu một trường hợp thử nghiệm thất bại, quá trình chấm dứt ngay lập tức, trước khi nó gây hại hơn nữa. Điều này có nghĩa rằng tất cả các trường hợp thử nghiệm bắt đầu từ một slate sạch sẽ, không bị ảnh hưởng bởi các xét nghiệm khác. Đây là compartmentalization.
Nó cũng có nghĩa là các bộ kiểm tra tiếp tục, ngay cả khi một thử nghiệm bị treo. Bạn có thể thiết lập thời hạn đối với trường hợp kiểm tra, và nếu thời gian cho phép là nghiêm trọng thấu chi, quá trình kiểm tra trường hợp bị giết. Hai, tạo nên một phần mạnh mẽ.
Bạn có thể xác định phụ thuộc giữa các trường hợp thử nghiệm và giữa các dãy phòng thử nghiệm, do đó nếu một xét nghiệm cơ bản không thành, các bài kiểm tra được dựa trên các chức năng cơ bản thậm chí sẽ không được chạy.
Quá trình chính crpcut không có bất kỳ bộ nhớ động được phân bổ đồng thời một quá trình test được bắt đầu, vì vậy bạn có thể chạy crpcut sử dụng một công cụ kiểm tra bộ nhớ, như valgrind, và nếu có được cấp phát bộ nhớ khi quá trình kiểm tra trường hợp chấm dứt, bạn có thể yên tâm rằng bạn đã tìm thấy một rò rỉ bộ nhớ trong thử nghiệm của bạn.
Nếu bạn có một CPU đa lõi, nó có thể có ích để chạy một số trường hợp thử nghiệm song song. crpcut phép đó.
Nếu có những tập tin còn lại trong quá trình thử nghiệm 'thư mục làm việc sau khi quá trình kiểm tra trường hợp đã chấm dứt, các trường hợp thử nghiệm được coi là thất bại. Các thư mục làm việc là trái ảnh hưởng bởi crpcut, để bạn có thể kiểm tra
là gì mới trong phiên bản này:.
- Phiên bản này hỗ trợ phân phối với các phiên bản cũ của CMake.
là gì mới trong phiên bản 1.9.1:
- libcrpcut_basic.so được xây dựng nhưng không được cài đặt
là gì mới trong phiên bản 1.8.4:
- Đây là một phiên bản nhỏ bugfix chỉnh vấn đề valgrind thiết bị đo đạc , phụ thuộc và kiểm tra lỗi thuộc tính thời gian thử nghiệm trong các báo cáo XML.
là gì mới trong phiên bản 1.8.2:
- tăng cường tính năng nhỏ này làm cho các tham số dòng lệnh - -timeout-multiplier = yếu tố bây giờ cũng có tác dụng trên timeout cho xây dựng cố định và tiêu hủy.
là gì mới trong phiên bản 1.8.1:
- tăng cường tính năng nhỏ này làm cho các tham số dòng lệnh - -timeout-multiplier = yếu tố bây giờ cũng có tác dụng trên timeout cho xây dựng cố định và tiêu hủy.
là gì mới trong phiên bản 1.7.2:
- Phiên bản này sửa chữa một lỗi nhỏ với các thử nghiệm NO_CORE_FILE sửa đổi xảy ra trên Linux khi / proc / sys / kernel / core_pattern mô tả đường ống các bãi chứa lõi để một chương trình chứ không phải là tiết kiệm cho một tập tin.
là gì mới trong phiên bản 1.6.1:
- Đây là một bản vá cho một lỗi trong một số trường hợp gây ra dị dạng XML-đầu ra bởi thiếu sót thúc vào danh sách blocked_tests.
là gì mới trong phiên bản 1.6.0:
- Các tính năng mới là một tham số tùy chọn bổ sung để ASSERT_THROW () và VERIFY_THROW () sẽ kiểm tra giá trị của một đối tượng ngoại lệ, hai istream dựa trên phiên bản của get_parameter () để chọn giá trị được truyền từ dòng lệnh, và một tùy chọn để xây dựng thư viện libcrpcut như tĩnh hoặc chia sẻ.
là gì mới trong phiên bản 1.5.0:
- Các tính năng mới quan trọng được gắn thẻ của các bài kiểm tra. Tags là một thử nghiệm phương pháp lựa chọn trực giao với các testsuites. Tags cũng có thể được sử dụng để phân biệt giữa các thử nghiệm đó rất quan trọng (ví dụ như hồi quy) và bài kiểm tra đó là không quan trọng (ví dụ như các chức năng hiện đang làm việc trên.)
- hỗ trợ thực nghiệm cũng có sẵn để trang trí báo cáo thử nghiệm với, ví dụ, thoát ANSI màu.
Bình luận không