Difference between revisions of "Using CDD"

 
(15 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
= Getting Started =
 
= Getting Started =
  
* First you need to make the two CDD tool windows ''''Testing'''' and ''''CDD Output'''' visible. Do that by going to the menu ''''View -> Tools'''' and select ''''Testing'''' and ''''CDD Output'''':
+
The following will first give a quick overview of the two main features of CDD:
  
[[Image:enable_cdd.png|center]]
+
== Test Case Execution ==
  
* Now enable background execution and extraction of test cases. The first will cause the execution of your test cases after every compilation and the second will extract a new test case after every exception. To enable both make sure both  of the toolbar buttons (marked in red) below are pressed.
+
This adds full unit testing support to EiffelStudio. It is similar to the xUnit family of testing tools. Each test case that contains the word ''''TEST'''' in its name and inherits from class ''''CDD_TEST_CASE'''' is automatically considered a test class. Test cases are autmatically executed after every compilation. Execution can be restricted, disabled and individual test cases can be started in debug mode.
 +
 
 +
== Test Case Extraction ==
 +
CDD observs the developer while running the program under development. Whenever an exception is thrown CDD gets activated automatically and extracts a test cases that is able to reproduce the observed failure. Once a test case is extracted it shows up in the test case view and behaves like an ordinary manually written test cases.
  
[[Image:enable_exec_and_extract.png|center]]
 
  
 
= How to add a manual test case =
 
= How to add a manual test case =
  
To add a manual test case simply create a new class whose name contains the word ''''TEST'''', have it inherit from CDD_TEST_CASE and add one or several unit test routines. Make sure that all unit test routines start with ''''test_''''. Here is a simple example test class:
+
To add a manual test case simply press the ''''Create new manual test case'''' button:
 +
 
 +
[[Image:create_test_case.png|center]]
 +
 
 +
Alternatively you can also create a new test case manually. Just create a new class whose name contains the word ''''TEST'''', have it inherit from CDD_TEST_CASE and add one or several unit test routines. Make sure that all unit test routines start with ''''test_''''. Here is a simple example test class:
  
 
<eiffel>
 
<eiffel>
Line 32: Line 38:
 
</eiffel>
 
</eiffel>
  
After you have added your test class, recompile and your test case should automatially appear in the ''''Testing'''' tool window. A template test case can created by pressing the ''''Create new manual test case'''' button:
+
After you have added your test class, recompile and your test case should automatially appear in the ''''Testing'''' tool window.
 
+
[[Image:create_test_case.png|center]]
+
  
 
= How to extract a test case =
 
= How to extract a test case =
 +
 +
CDD automatically extracts a new test case after every thrown exception. This test case will appear in the normal test case tool window and can be managed like an ordinary manually written test case.
  
 
= How to search for a test case =
 
= How to search for a test case =
 +
 +
Use the filter text box to search for test case by name or tag. Make sure you press enter after you have changed the filter text.
  
 
= How to add a tag to a test case =
 
= How to add a tag to a test case =
 +
 +
You can add custom tags to test cases by adding a indexing item ''''tag'''' to either the test class or the test routine. Here is an example of a test class with a tag:
 +
 +
<eiffel>
 +
indexing
 +
  tag: "fixme"
 +
class TEST_BANK_ACCOUNT
 +
inherit CDD_TEST_CASE
 +
feature
 +
  test_deposit
 +
    local
 +
      ba: BANK_ACCOUNT
 +
    do
 +
      create ba.make_with_balance (0)
 +
      ba.deposit (100)
 +
      check
 +
        money_depisited: ba.balance = 100
 +
      end
 +
    end
 +
end
 +
</eiffel>
  
 
= How to restrict test case execution =
 
= How to restrict test case execution =
 +
 +
If the ''''Restrict'''' push-button is pressed, only test cases matching the current filter criterion (i.e. test cases that show up in the tree-view) will be executed. You can use this to shorten testing time when working on a particular subset of your program.
 +
 +
= How to run a test case in debug mode =
 +
 +
To debug a test case, first select it in the test case view and then press the ''Debug selected test routine'' button.
 +
 +
= How to delete a test case =
 +
 +
Test cases or more precisely test routines are regular routines in test classes. In order to delete a test routine simply delete the routine code from the test class. Note that you can easily pick'n'drop the routine into the editor.
 +
You can also simply pick'n'drop a test routine to the class deletion pebble. Do note however that this always deletes
 +
the whole class (which may contain other test routines as well).

Latest revision as of 04:32, 14 February 2008


Getting Started

The following will first give a quick overview of the two main features of CDD:

Test Case Execution

This adds full unit testing support to EiffelStudio. It is similar to the xUnit family of testing tools. Each test case that contains the word 'TEST' in its name and inherits from class 'CDD_TEST_CASE' is automatically considered a test class. Test cases are autmatically executed after every compilation. Execution can be restricted, disabled and individual test cases can be started in debug mode.

Test Case Extraction

CDD observs the developer while running the program under development. Whenever an exception is thrown CDD gets activated automatically and extracts a test cases that is able to reproduce the observed failure. Once a test case is extracted it shows up in the test case view and behaves like an ordinary manually written test cases.


How to add a manual test case

To add a manual test case simply press the 'Create new manual test case' button:

Create test case.png

Alternatively you can also create a new test case manually. Just create a new class whose name contains the word 'TEST', have it inherit from CDD_TEST_CASE and add one or several unit test routines. Make sure that all unit test routines start with 'test_'. Here is a simple example test class:

class TEST_BANK_ACCOUNT
inherit CDD_TEST_CASE
feature
  test_deposit
    local
      ba: BANK_ACCOUNT
    do
      create ba.make_with_balance (0)
      ba.deposit (100)
      check
         money_depisited: ba.balance = 100
      end
    end
end

After you have added your test class, recompile and your test case should automatially appear in the 'Testing' tool window.

How to extract a test case

CDD automatically extracts a new test case after every thrown exception. This test case will appear in the normal test case tool window and can be managed like an ordinary manually written test case.

How to search for a test case

Use the filter text box to search for test case by name or tag. Make sure you press enter after you have changed the filter text.

How to add a tag to a test case

You can add custom tags to test cases by adding a indexing item 'tag' to either the test class or the test routine. Here is an example of a test class with a tag:

indexing
  tag: "fixme"
class TEST_BANK_ACCOUNT
inherit CDD_TEST_CASE
feature
  test_deposit
    local
      ba: BANK_ACCOUNT
    do
      create ba.make_with_balance (0)
      ba.deposit (100)
      check
         money_depisited: ba.balance = 100
      end
    end
end

How to restrict test case execution

If the 'Restrict' push-button is pressed, only test cases matching the current filter criterion (i.e. test cases that show up in the tree-view) will be executed. You can use this to shorten testing time when working on a particular subset of your program.

How to run a test case in debug mode

To debug a test case, first select it in the test case view and then press the Debug selected test routine button.

How to delete a test case

Test cases or more precisely test routines are regular routines in test classes. In order to delete a test routine simply delete the routine code from the test class. Note that you can easily pick'n'drop the routine into the editor. You can also simply pick'n'drop a test routine to the class deletion pebble. Do note however that this always deletes the whole class (which may contain other test routines as well).