Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Mihini/Mihini UnitTest"
(→Add a new test) |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Mihini comes with several unittest | + | Mihini comes with several unittest facilities. |
== Lua unittest == | == Lua unittest == | ||
Line 41: | Line 41: | ||
</source> | </source> | ||
− | === Run a specific | + | === Run a specific test === |
* require the Lua file containing the unittest suite | * require the Lua file containing the unittest suite | ||
+ | * do unittest.run() | ||
+ | |||
+ | E.G. using agent telnet: | ||
+ | |||
+ | <source lang="lua"> | ||
+ | > telnet localhost 2000 | ||
+ | |||
+ | > require"mymoduletest" | ||
+ | > unittest.run() | ||
+ | |||
+ | </source> | ||
+ | |||
=== Run all tests === | === Run all tests === | ||
Line 58: | Line 70: | ||
== CMake unittest == | == CMake unittest == | ||
− | The point of this part is have C unittests, to be integrated easily with CMake (our build system), and run those tests easily: in deed, some test, like C tests can't be easily run in Mihini agent telnet, and can require other/new process, and/or specific tool to be run along side with the test (service providers stubs etc) | + | The point of this part is to have C unittests, to be integrated easily with CMake (our build system), and run those tests easily: in deed, some test, like C tests can't be easily run in Mihini agent Lua telnet, and can require other/new process, and/or specific tool to be run along side with the test (service providers stubs etc). |
+ | |||
+ | CTest is used to do this. | ||
=== Add a new test === | === Add a new test === | ||
+ | use ADD_UNIT_TEST macro in some CMakeLists.txt file: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | ADD_LIBRARY(lib_mylib SHARED mylib.c) | ||
+ | |||
+ | ADD_UNIT_TEST(mylibtest mylib_test.c RUNTIME_DEPENDENCIES lib_mylib) | ||
+ | </source> | ||
=== Run all tests === | === Run all tests === | ||
+ | |||
+ | Note: most of existing tests require the agent to be started '''manually''' before running them. | ||
+ | |||
+ | This commands runs all tests added with ADD_UNIT_TEST macro : the native tests and some Lua test too. | ||
+ | |||
+ | In build.default folder: (or any build.$target folder), do: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | build.default> make test | ||
+ | </source> | ||
+ | |||
+ | This commands calls CTest with specific options. | ||
+ | |||
+ | === Call CTest manually === | ||
+ | |||
+ | <source lang="bash"> | ||
+ | build.default> ctest --output-on-failure -j2 --timeout 10 -E foo | ||
+ | build.default> ctest --output-on-failure -j2 --timeout 10 -R bar | ||
+ | </source> | ||
+ | |||
+ | * "--output-on-failure" -> stop after error, more verbose | ||
+ | * "-j2" -> runs 2 tests at the same time (related to `make -j` option) | ||
+ | * "--timeout 10" -> timeout for each individual unittest | ||
+ | * "-E foo" -> exclude tests matching "foo" pattern | ||
+ | * "-R bar" -> only run tests matching "bar" pattern |
Latest revision as of 04:55, 19 July 2013
Mihini comes with several unittest facilities.
Contents
Lua unittest
we provide unittest.lua file to create new unittest in Lua.
Add a new test
- Create a new Lua file.
- require "unittest"
- create a new testsuite
- create new test cases
- special test cases:
- setup: run before all other test cases of the test suite
- teardown: run after all other test cases of the test suite
local mymodule = require "mymodule" local u = require "unittest" --create the test suite local t = u.newtestsuite("mymodule") -- note that all test must be created like this: testsuitetable:setup, testsuitetable:teardown or testsuitetable:test_TESTNAME, -- TESTNAME is the only part in test function name that can be changed. function t:setup(); u.assert(mymodule.init()) end function t:teardown() u.assert(mymodule.stop()) end function t:test_01_feature1() u.assert(mymodule.f1()) end
Run a specific test
- require the Lua file containing the unittest suite
- do unittest.run()
E.G. using agent telnet:
> telnet localhost 2000 > require"mymoduletest" > unittest.run()
Run all tests
The testsuite to run are kept for each call to newtestsuite function, so just have to require all Lua files containing unittest suites and then do unittest.run().
CMake unittest
The point of this part is to have C unittests, to be integrated easily with CMake (our build system), and run those tests easily: in deed, some test, like C tests can't be easily run in Mihini agent Lua telnet, and can require other/new process, and/or specific tool to be run along side with the test (service providers stubs etc).
CTest is used to do this.
Add a new test
use ADD_UNIT_TEST macro in some CMakeLists.txt file:
ADD_LIBRARY(lib_mylib SHARED mylib.c) ADD_UNIT_TEST(mylibtest mylib_test.c RUNTIME_DEPENDENCIES lib_mylib)
Run all tests
Note: most of existing tests require the agent to be started manually before running them.
This commands runs all tests added with ADD_UNIT_TEST macro : the native tests and some Lua test too.
In build.default folder: (or any build.$target folder), do:
build.default> make test
This commands calls CTest with specific options.
Call CTest manually
build.default> ctest --output-on-failure -j2 --timeout 10 -E foo build.default> ctest --output-on-failure -j2 --timeout 10 -R bar
- "--output-on-failure" -> stop after error, more verbose
- "-j2" -> runs 2 tests at the same time (related to `make -j` option)
- "--timeout 10" -> timeout for each individual unittest
- "-E foo" -> exclude tests matching "foo" pattern
- "-R bar" -> only run tests matching "bar" pattern