Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: CUnit Test và CPPUnit Test, sử dụng như thế nào?

  1. #1
    No Avatar
    ndn Khách

    Mặc định CUnit Test và CPPUnit Test, sử dụng như thế nào?

    Có bạn nào đã dùng CUnit test hoặc CPPUnit Test để test các hàm trong C chưa vậy? Đây là một cái rất hay mà dân lập trình nên biết (cộng đồng Java có JUnit, C++ có CPPUnit và của anh em mình là CUnit) bây giờ mình đang nghiên cứu về CUnit, nhưng hiện tại mình cần "CUnit for Mr. Ando" nhưng không có. Bạn nào có thì share cho mình với nhé. Arigatoo gozaimasu

  2. #2
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    bản thân thấy thư viện này khá củ chuối
    đại khái là cách làm của nó tương tự mấy phát biểu assert

    Muốn làm việc với CppUnit, buộc bạn phải chèn những phát biểu được qui định bởi CppUnit vào trong chương trình của bạn, điều đó khiến lập trình viên không hứng thú lắm

    Để thử dùng bạn có thể lên sourceforce để down cả mã nguồn + samples về, chi tiết các bạn vào Google

    tui mong muốn một tool(chứ không phải là thư viện) có thể tự sinh ra test case hơn, tui đang có ý định viết tool này, hi vọng share được cho các bạn

    "CUnit for Mr. Ando"
    không hiểu ý này. "Mr. Ando" là một ngôn ngữ lập trình nào chăng

  3. #3
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    Đây là các thư viện hỗ trợ thực hiện unit test cho các function và method

    tiền thân xuất phát từ JUnit cho Java, sau đó có 1tay port sang C++ lấy tên là CppUnit.
    JUnit thì tốt, nhưng do sự khác biệt trong ngôn ngữ, chuyển qua C++ thì thành củ chuối. Đó là ý nhận xét cá nhân

  4. #4
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    OK, Here you are:

    Example:

    Doc Code:
    1. Simple example of a CUnit unit test.
    2. This program (crudely) demonstrates a very simple "black box" test of the standard library functions fprintf() and fread(). It uses suite initialization and cleanup functions to open and close a common temporary file used by the test functions. The test functions then write to and read from the temporary
    3. file in the course of testing the library functions.
    4.  
    5. The 2 test functions are added to a single CUnit suite, and then run using the CUnit Basic interface.  The output of the program (on CUnit version 2.0-2) is:
    6.  
    7. CUnit : A Unit testing framework for C.
    8. http://cunit.sourceforge.net/
    9.  
    10. Suite: Suite_1
    11. Test: test of fprintf() ... passed
    12. Test: test of fread() ... passed
    13.  
    14. --Run Summary: Type      Total     Ran  Passed  Failed
    15. suites        1       1     n/a       0
    16. tests         2       2       2       0
    17. asserts       5       5       5       0

    C Code:
    1. #include <stdio.h>
    2. #include <string.h>
    3. #include "CUnit/Basic.h"
    4.  
    5. /* Pointer to the file used by the tests. */
    6. static FILE* temp_file = NULL;
    7.  
    8. /* The suite initialization function.
    9.  * Opens the temporary file used by the tests.
    10.  * Returns zero on success, non-zero otherwise.
    11.  */
    12. int init_suite1(void)
    13. {
    14.    if (NULL == (temp_file = fopen("temp.txt", "w+"))) {
    15.       return -1;
    16.    }
    17.    else {
    18.       return 0;
    19.    }
    20. }
    21.  
    22. /* The suite cleanup function.
    23.  * Closes the temporary file used by the tests.
    24.  * Returns zero on success, non-zero otherwise.
    25.  */
    26. int clean_suite1(void)
    27. {
    28.    if (0 != fclose(temp_file)) {
    29.       return -1;
    30.    }
    31.    else {
    32.       temp_file = NULL;
    33.       return 0;
    34.    }
    35. }
    36.  
    37. /* Simple test of fprintf().
    38.  * Writes test data to the temporary file and checks
    39.  * whether the expected number of bytes were written.
    40.  */
    41. void testFPRINTF(void)
    42. {
    43.    int i1 = 10;
    44.  
    45.    if (NULL != temp_file) {
    46.       CU_ASSERT(0 == fprintf(temp_file, ""));
    47.       CU_ASSERT(2 == fprintf(temp_file, "Q\n"));
    48.       CU_ASSERT(7 == fprintf(temp_file, "i1 = %d", i1));
    49.    }
    50. }
    51.  
    52. /* Simple test of fread().
    53.  * Reads the data previously written by testFPRINTF()
    54.  * and checks whether the expected characters are present.
    55.  * Must be run after testFPRINTF().
    56.  */
    57. void testFREAD(void)
    58. {
    59.    unsigned char buffer[20];
    60.  
    61.    if (NULL != temp_file) {
    62.       rewind(temp_file);
    63.       CU_ASSERT(9 == fread(buffer, sizeof(unsigned char), 20, temp_file));
    64.       CU_ASSERT(0 == strncmp(buffer, "Q\ni1 = 10", 9));
    65.    }
    66. }
    67.  
    68. /* The main() function for setting up and running the tests.
    69.  * Returns a CUE_SUCCESS on successful running, another
    70.  * CUnit error code on failure.
    71.  */
    72. int main()
    73. {
    74.    CU_pSuite pSuite = NULL;
    75.  
    76.    /* initialize the CUnit test registry */
    77.    if (CUE_SUCCESS != CU_initialize_registry())
    78.       return CU_get_error();
    79.  
    80.    /* add a suite to the registry */
    81.    pSuite = CU_add_suite("Suite_1", init_suite1, clean_suite1);
    82.    if (NULL == pSuite) {
    83.       CU_cleanup_registry();
    84.       return CU_get_error();
    85.    }
    86.  
    87.    /* add the tests to the suite */
    88.    /* NOTE - ORDER IS IMPORTANT - MUST TEST fread() AFTER fprintf() */
    89.    if ((NULL == CU_add_test(pSuite, "test of fprintf()", testFPRINTF)) ||
    90.        (NULL == CU_add_test(pSuite, "test of fread()", testFREAD)))
    91.    {
    92.       CU_cleanup_registry();
    93.       return CU_get_error();
    94.    }
    95.  
    96.    /* Run all tests using the CUnit Basic interface */
    97.    CU_basic_set_mode(CU_BRM_VERBOSE);
    98.    CU_basic_run_tests();
    99.    CU_cleanup_registry();
    100.    return CU_get_error();
    101. }

    Ref Code:
    1. Document:
    2. http://cunit.sourceforge.net/doc/index.html
    3.  
    4. CUnit test, download from the follwing:
    5. http://prdownloads.sourceforge.net/cunit/CUnit-2.1-0-winlib.zip?download
    6.  
    7. CPP Unit test[
    8. http://www.codeproject.com/library/Using_CPPUnit.asp

    Best Regard!
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  5. #5
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    bạn phải build gói CppUnit trước thành thư viện .dll hoặc .lib sau đó import chúng vào project của bạn, hoặc thêm tất cả các file .cpp của gói CppUnit vào project của bạn

  6. #6
    Ngày gia nhập
    08 2009
    Bài viết
    7

    Mặc định CUnit Test và CPPUnit Test, sử dụng như thế nào?

    Ôi, nghe các bác nói em cứ loạn hết cả xì ngầu lên, em chưa test unit bi giờ,đợc các tool hay thư viện em chả hiểu cái mô tê gì hết :((

  7. #7
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Trích dẫn Nguyên bản được gửi bởi tranhuyentb89 Xem bài viết
    Ôi, nghe các bác nói em cứ loạn hết cả xì ngầu lên, em chưa test unit bi giờ,đợc các tool hay thư viện em chả hiểu cái mô tê gì hết :((
    Tự dưng đem đào một cái đề tài cũ rích lên rồi than không hiểu.

    Test là trình độ của lập trình bậc trung, không phải cho người mới học. Unit test chủ yếu dùng để test các lớp lớn và phức tạp.
    Muốn hiểu được cái này thì phải học qua phần này:
    Unit test, Integration test, và Regression test.

  8. #8
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Xin lỗi đã không rõ ràng.

    Từ test tôi nói trên dùng trong ngữ cảnh của một ứng dụng (application), cho nên nó đòi hỏi trình độ hiểu biết tương đối khá.

    Chứ test một bài tập đơn giản (như 99% các bài trong diễn đàn này) thì là điều căn bản. Ai biết viết code cũng phải biết test.

  9. #9
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Thật sự mà nói, ở trình độ năm 1 năm 2, viết testing manual vẫn tốt hơn. Cứ cout, printf() cũng có thể test được hết. Làm kiểu này thì sau này đi làm gặp test tool cũng hiểu rõ hơn vì sao chúng ta lại phải dùng nó.

Các đề tài tương tự

  1. Kỹ thuật C cách xây dựng bộ test o dưới trong c viết như thế nào vậy
    Gửi bởi contimmongmanh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 08-04-2013, 07:44 PM
  2. Trả lời: 1
    Bài viết cuối: 14-10-2012, 01:03 PM
  3. Algorithm Sử dụng NUnit Test trong C# như thế nào ?
    Gửi bởi thuchobiet trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 21-10-2011, 05:49 PM
  4. Test case | Tạo test Project với NUnit?
    Gửi bởi nguyenthanh2687 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 06-12-2010, 09:04 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn