rlang  Sun, 01 Dec 2019 10:26:34 +0000

Modified page: https://wiki.horde.org/Doc/Dev/Test
New Revision:  10
Change log:  Actual unit testing

@@ -115,4 +115,30 @@

 For single or individual tests use phpunit.

In a developer checkout, unit tests can also be run by calling <code>../components/bin/horde-components qc</code> from the app's root dir.
+
+++ Unit testing a simple library
+
+I call a library simple to test which does not do IO (db, downloads, interact with devices), does not apply side effects to its input arguments and does not depend on global state.
+
+This is quite straight forward.
+For example, look at [[https://github.com/horde/Argv/tree/master/test/Horde/Argv|the Horde_Argv library's test suite]].
+
+The logic is easy to test as all the classes get their complete state from input to methods or the constructor. You can just insert what you want to test and look at the results. Some very minimal test setup is done in the base class Horde_Argv_TestCase from which the actual test cases are derived. Each test case may have a setUp method before the individual tests are run. This method sets up the environment with the unit under test. Look at the ParserTest. In setUp, the parser is configured with commandline switches it should recognize. Then, the individual tests interact with the parser. Individual assertions which are non-trivial and reused can be factored out into helper methods like assertRemoved.
+
+++ Not so simple libraries
+
+It gets more complicated the more libraries either mix logic with data retrieval, IO, side effects or if they are essentially adapters to backends. +For example, a lot of code in Horde_Core is essentially glue between standalone libraries to provide easy to use wrappers and derived classes for horde applications.
+
++++ database access
+
+
+
++++ File IO, streams, internet
+
+++ Testing horde applications
+
++++ Unit testing well definded subsystems of applications
+
++++ Integration tests / end to end tests

--
commits mailing list
Frequently Asked Questions: http://wiki.horde.org/FAQ
To unsubscribe, mail: [email protected]

Reply via email to