Skip to main content
Jump to: navigation, search

Riena/Getting Started with Controller Tests

< Riena
Revision as of 08:10, 15 January 2010 by Achilles.sabine.gmail.com (Talk | contribs) (New page: = 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...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 instantiates 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).

Testing scenarios

Testing Ridget behavior

Here is a short example to test simple correlations between Ridgets or the behavior of one single Ridget (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);
}

Testing the navigation

Back to the top