Introduction18.1. Automating Unit TestingProblemSolutionDiscussion18.2. Asserting ResultsProblemSolutionok( boolean[, message ])equals( actual, expected[, message ])same( actual, expected[, message ])18.3. Testing Synchronous CallbacksProblemSolutionDiscussion18.4. Testing Asynchronous CallbacksProblemSolutionDiscussion18.5. Testing User ActionsProblemSolutionDiscussion18.6. Keeping Tests AtomicProblemSolutionDiscussion18.7. Grouping TestsProblemSolutionDiscussion18.8. Selecting Tests to RunProblemSolutionDiscussion