Модульные тесты (unit tests) можно создавать и выполнять и на уровне Middleware, и на клиентском уровне. Для этого платформа включает в себя фреймворки JUnit и JMockit.
Допустим, имеется следующий контроллер экрана:
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 } }); } }
Тогда можно написать следующий тест, проверяющий работу метода init()
:
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)); } }; } }