Am 02.11.2015 um 21:36 schrieb Vincent van Ravesteijn:
Dear all,
I have prepared a unit test framework based on google-test (gtest). You can see
the commits at
http://git.lyx.org/?p=developers/vfr/lyx.git;a=shortlog;h=refs/heads/tests. It
includes gtest-1.7.0 (permitted by the
license).
Unit testing can be enabled by running CMake with -DLYX_ENABLE_UNIT_TESTS. This
will make a target gtest-main and
unit-tests. It also create LyX.lib against which the unit testing executable is
linked so that the functionality in the
core can be tested.
I have created a first (example) test case in tests/src/Buffer.cpp, called
"BufferTest", which has three tests and which
is supposed to test the functionality of "lyx::Buffer".
A CMake target "unit-tests" now builds an executable running all unit-tests and
gives an output as below. For each test
case, there is also automatically a CTest created. This test runs "unit-tests
--gtest_filter=BufferTest" and gives a
summary. For more details, it is adviced to run the unit-tests executable
directly (or improve CMake to capture the
output somehow).
Any comments ? Shall I proceed to push this to master ?
Vincent
Having a unit test framework integrated is a very good idea!
Why have you chosen gtest and not QTest? Does gtest has interesting
features which QTest does not have?
One benefit of QTest is that it ships with the Qt installation and
no code has to be added to the repository.
But knowing gtest (also integrating into a existing project)
is also good for other non-Qt projects.
Peter
#ctest -N
Test project C:/Users/Vincent/Documents/LyX/build/lyx/tests
Test #1: unit_test/src/BufferTest
Total Tests: 1
#ctest -R
Test project C:/Users/Vincent/Documents/LyX/build/lyx/tests
Start 1: unit_test/src/BufferTest
1/1 Test #1: unit_test/src/BufferTest .........***Failed 0.27 sec
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.28 sec
The following tests FAILED:
1 - unit_test/src/BufferTest (Failed)
Errors while running CTest
#unit-tests
Running main() from gtest_main.cc
[==========] Running 3 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 3 tests from BufferTest
[ RUN ] BufferTest.NonExistingFile
[ OK ] BufferTest.NonExistingFile (0 ms)
[ RUN ] BufferTest.NonExistingFileOperations
[ OK ] BufferTest.NonExistingFileOperations (0 ms)
[ RUN ] BufferTest.UnicodeCharacters
..\..\..\source\gitlyx\tests\src\Buffer.cpp(45): error: Value of: string("C:/tés
t.lyx")
Actual: "C:/t\xA8\xA6st.lyx"
Expected: fn1.absFileName()
Which is: "C:/t\xEF\xBF\xBD\xEF\xBF\xBDst.lyx"
[ FAILED ] BufferTest.UnicodeCharacters (0 ms)
[----------] 3 tests from BufferTest (0 ms total)
[----------] Global test environment tear-down
[==========] 3 tests from 1 test case ran. (0 ms total)
[ PASSED ] 2 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] BufferTest.UnicodeCharacters
1 FAILED TEST