Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Riena/Getting Started with Controller Tests"
(→Setting up a test case) |
(→Testing Ridget behavior) |
||
Line 22: | Line 22: | ||
== Testing scenarios == | == Testing scenarios == | ||
=== Testing Ridget behavior === | === Testing Ridget behavior === | ||
− | Here is a short example to test simple correlations between Ridgets | + | Here is a short example to test simple correlations between Ridgets (see ChoiceSubModuleController from the Riena Example Client): |
<source lang="java"> | <source lang="java"> | ||
public void testPriceAstonMartinWithOptions() { | public void testPriceAstonMartinWithOptions() { |
Revision as of 08:21, 15 January 2010
Contents
Riena Controller Testing
Testing your SubModuleControllers is an essential part of assuring the quality of your client. With Rienas Controller Testing support it is quite easy to find problems in your SubModuleController logic at an early stage.
Prerequisites
In order to set up test cases, the SubModuleController has to be prepared to acquire Ridgets without a bound view. To do so the method getRidget(Class<R> ridgetClazz, String id) has to be used in the SubModuleController to test. On the one hand this method wraps getRidget(String id) to return an already known (bound) instance of the Ridget and on the other hand it creates a new instance of the Ridget if run in test mode and no bound widget is existent.
Setting up a test case
All SubModuleControllerTests should extend AbstractSubModuleControllerTest. This class provides the essential operations needed to test a controller. Every test class has to implement the abstract method createController(ISubModuleNode node) where the SubModuleController to test has to be created and returned. Sometimes ist is necessary to set a NavigationNode on the SubModuleController (if things like navigation or marker have to be tested). E.g.:
@Override protected MarkerSubModuleController createController(ISubModuleNode node) { MarkerSubModuleController newInst = new MarkerSubModuleController(); node.setNodeId(new NavigationNodeId("org.eclipse.riena.example.marker")); newInst.setNavigationNode(node); return newInst; }
Testing scenarios
Testing Ridget behavior
Here is a short example to test simple correlations between Ridgets (see ChoiceSubModuleController from the Riena Example Client):
public void testPriceAstonMartinWithOptions() { ISingleChoiceRidget compositeCarModel = getController().getRidget(ISingleChoiceRidget.class, "compositeCarModel"); IMultipleChoiceRidget compositeCarExtras = getController().getRidget(IMultipleChoiceRidget.class, "compositeCarExtras"); compositeCarModel.setSelection(CarModels.ASTON_MARTIN); compositeCarExtras.setSelection(Arrays.asList(CarOptions.FRONT_GUNS, CarOptions.UNDERWATER)); assertEquals(compositeCarModel.getSelection(), CarModels.ASTON_MARTIN); assertEquals(compositeCarExtras.getSelection().size(), 2); assertEquals(compositeCarExtras.getSelection().get(0), CarOptions.FRONT_GUNS); assertEquals(compositeCarExtras.getSelection().get(1), CarOptions.UNDERWATER); assertEquals(getController().getCarConfig().getPrice(), 150000); }