Changes between Version 1 and Version 2 of Projects/GSoC/TestingReview


Ignore:
Timestamp:
07/07/12 00:19:24 (12 years ago)
Author:
Xiaochen Pan
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Projects/GSoC/TestingReview

    v1 v2  
    1717  * Latest download count:
    1818
    19 [wiki:Cmockery Cmockery] Cmockery is a lightweight and highly portable unit testing framework with minimum conflicts with standard C library headers. It is well suited to work for RTEMS based testing thanks its effort to avoid relying on new features of compilers, and also its lightweight and minimum-conflict headers. It also works well for Host based tests too. Unlike CMock, Cmockery has a relatively less stringent format requirements, while it requires the tester to write the test runner and mock functions by hand, while both of which can be automatically generated by scripts in Cmock. Cmockery provides convenient interface to test for memory leaks, buffer underflow and buffer overflow, all of which would cause fatal errors for single processed RTEMS system. For mock function implementations, Cmock testers only need to define the expect input and output for certain functions in unit tests, where the mock functions are generated by ruby script according to the header files, which is convenient and easy to use. However, with Cmockery, testers need to write the mock functions by hand, which is troublesome for test automation and sometimes confusing. Cmockery provides a more detailed tests report than CMock by providing the reason for tests failures.
     19[wiki:Cmockery Cmockery] Cmockery is a lightweight and highly portable unit testing framework with minimum conflicts with standard C library headers.
     20
    2021 * License: Apache License 2.0
    2122 * Programming Language: C
     
    2930  * Latest download count: 4618
    3031
    31 [wiki:Test-dept Test-dept] TestDept is unit testing framework providing stubing capabilities. TestDept support the concept of test-suites and test-cases, which are not clearly supported by CMockery and CMock. It also have provided a setup and teardown interface to each test cases like CMock. Stub functions are similar but different concept than mocking functions. It is supported by the replace_function(functions_to_be_replace, stub_function) interface. Mocking functions can deal with the argument expectations and mocked return values for any number of times you want. While stubing functions can only provide a uni-interface. For example, you can decide that a mocking function mock_function() to return 1 at the first time of being callled and return 2 at the second time of being called.  When stub technique is used, you cannot expect the same function to return different values unless you provide the inside logic basing on inputs of arguments, which is time-consuming and inconvenient for test automation. And also, because of the uni-interface of the stubbing function, it cannot specify the different expected value for certain argument each time the stubbing function is called. In conclusion, stubing functions are not as flexible and useful as mocking functions.
     32[wiki:Test-dept Test-dept] TestDept is unit testing framework providing stubing capabilities.
     33
    3234 * License: GNU GPL v3
    3335 * Programming Language: C, Assembly
     
    4143  * Latest Download count: 231
    4244
    43 [wiki:AceUnit AceUnit] AceUnit is a simple unit testing framework based on CUnit and EmbUnit. It conforms to JUnit 4.x architecture format, where it supports the concept of test suites, test fixtures, test cases, setup and cleanup functions. It supports automatic test discovery. It has stringent test writing format in order to use the prewritten java application as Generator for test generation automation, which is very convenient. It also have the Test Runner to run the well structured tests(suites-fixtures-cases) automatically. It is well suited to work for RTEMS based and Host based testing. Although it have provided a macro for tests to run in embedded fields, it is not 100% functional.
     45[wiki:AceUnit AceUnit] AceUnit is a simple unit testing framework based on CUnit and EmbUnit.
     46
    4447 * License: BSD
    4548 * Programming Language: C
     
    5255
    5356[wiki:Google_Test_and_Google_Mock Google Test and Google Mock] Google Tests is unit testing framework conforming to xUnit architecture. Google Mock is a library that can be used to provide mocking functionality to other C++ testing frameworks as well. They can be used in combination for host based testing with powerful functionalities they provide.
    54 By defining a strict test format, Google Tests supports automatic test discovery, and distinguishes fatal and non-fatal failures, which is not provided by most test frameworks.It also provides a rich set of assertions, and even user-defined assertions for more readable tests results display. It has provided three flexible ways for user to define custom assertions, using existing boolean functions, use AssertionResult object,  and using Predicate-formatter to further customize error messages.  It also provide a mechanism to verify that unit tests fails or exit with give exit code or error message in order to ensure that assertions fails as expected. In addition, it supports parameterized tests, which can be very convenient in tests automation. Test error propagation options have made it possible to write complicated unit tests without confusion. It also supports various options for running the tests,for example, tests repetition, independent tests running, tests shuffling. It supports XML test report generation.
    55 Google Mock provides a flexible mocking interface to C++ frameworks.
     57
    5658 * License: New BSD license
    5759 * Programming Language: C++