Unit tests can be created and run both at the Middleware and the Client tiers. The platform includes JUnit and JMockit frameworks for this purpose.
Let us assume you have the following screen controller:
public class OrderEditor extends AbstractEditor { @Named("itemsTable.add") protected AddAction addAction; @Override public void init(Map<String, Object> params) { addAction.setWindowId("sales$Product.lookup"); addAction.setHandler(new Lookup.Handler() { @Override public void handleLookup(Collection items) { // some code } }); } }
You can write the following test checking the init()
method:
public class OrderEditorTest { OrderEditor editor; @Mocked Window.Editor frame; @Mocked AddAction addAction; @Before public void setUp() throws Exception { editor = new OrderEditor(); editor.setWrappedFrame(frame); editor.addAction = addAction; } @Test public void testInit() { editor.init(Collections.<String, Object>emptyMap()); editor.setItem(new Order()); new Verifications() { { addAction.setWindowId("sales$Product.lookup"); addAction.setHandler(withInstanceOf(Window.Lookup.Handler.class)); } }; } }