diff --git a/doc/developer-notes.md b/doc/developer-notes.md --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -180,29 +180,11 @@ The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt to see it. -**running and debugging tests** +**writing tests** -Unit tests are run via `make check` -For running functional tests, see `/test/README.md` +For details on unit tests, see `unit-tests.md` -Simple example of debugging unit tests with GDB on Linux: -``` -cd /build/src/test -gdb test_bitcoin -break interpreter.cpp:295 # No path is necessary, just the file name and line number -run -# GDB hits the breakpoint -p/x opcode # print the value of the variable (in this case, opcode) in hex -c # continue -``` - -Simple example of debugging unit tests with LLDB (OSX or Linux): -``` -cd /build/src/test -lldb -- test_bitcoin -break set --file interpreter.cpp --line 295 -run -``` +For details on functional tests, see `/test/README.md` **writing script integration tests** diff --git a/src/test/README.md b/doc/unit-tests.md rename from src/test/README.md rename to doc/unit-tests.md --- a/src/test/README.md +++ b/doc/unit-tests.md @@ -8,7 +8,7 @@ To run the bitcoind tests manually, launch `src/test/test_bitcoin`. To add more bitcoind tests, add `BOOST_AUTO_TEST_CASE` functions to the existing -.cpp files in the `test/` directory or add new .cpp files that +.cpp files in the `src/test/` directory or add new .cpp files that implement new BOOST_AUTO_TEST_SUITE sections. To run the bitcoin-qt tests manually, launch `src/qt/test/test_bitcoin-qt` @@ -31,22 +31,37 @@ ### Note on adding test cases -The sources in this directory are unit test cases. Boost includes a -unit testing framework, and since bitcoin already uses boost, it makes -sense to simply use this framework rather than require developers to -configure some other framework (we want as few impediments to creating -unit tests as possible). - The build system is setup to compile an executable called `test_bitcoin` that runs all of the unit tests. The main source file is called -test_bitcoin.cpp. To add a new unit test file to our test suite you need -to add the file to `src/Makefile.test.include`. The pattern is to create -one test file for each class or source file for which you want to create -unit tests. The file naming convention is `_tests.cpp` -and such files should wrap their tests in a test suite -called `_tests`. For an example of this pattern, +test_bitcoin.cpp. To add a new unit test file to our test suite you need +to add the file to `src/Makefile.test.include`. The pattern is to create +one test file for each class or source file for which you want to create +unit tests. The file naming convention is `_tests.cpp` +and such files should wrap their tests in a test suite +called `_tests`. For an example of this pattern, examine `uint256_tests.cpp`. For further reading, I found the following website to be helpful in explaining how the boost unit test framework works: [http://www.alittlemadness.com/2009/03/31/c-unit-testing-with-boosttest/](http://www.alittlemadness.com/2009/03/31/c-unit-testing-with-boosttest/). + +### Debugging unit tests + +Simple example of debugging unit tests with GDB on Linux: +``` +cd /build/src/test +gdb test_bitcoin +break interpreter.cpp:295 # No path is necessary, just the file name and line number +run +# GDB hits the breakpoint +p/x opcode # print the value of the variable (in this case, opcode) in hex +c # continue +``` + +Simple example of debugging unit tests with LLDB (OSX or Linux): +``` +cd /build/src/test +lldb -- test_bitcoin +break set --file interpreter.cpp --line 295 +run +``` diff --git a/src/test/data/README.md b/src/test/data/README.md deleted file mode 100644 --- a/src/test/data/README.md +++ /dev/null @@ -1,12 +0,0 @@ -Description ------------- - -This directory contains data-driven tests for various aspects of Bitcoin. - -License --------- - -The data files in this directory are distributed under the MIT software -license, see the accompanying file COPYING or -http://www.opensource.org/licenses/mit-license.php. -