Интеграционные тесты на клиентском уровне реализуются с применением фреймворка JMockit . С его помощью тест изолируется от Middleware, а также создаются необходимые объекты инфраструктуры.
Класс клиентского интеграционного теста должен быть унаследован от CubaClientTestCase
. В методе @Before
необходимо вызвать унаследованные методы addEntityPackage()
, setViewConfig()
и затем setupInfrastructure()
для создания объектов
Metadata
и
Configuration
и развертывания метаданных по выбранным сущностям. Далее в методе @Before
можно дополнить инфраструктуру необходимыми мок-объектами с помощью конструкции Expectations
или NonStrictExpectations
.
Пример инициализирующего метода @Before
одного из тестов платформы:
@Before public void setUp() throws Exception { addEntityPackage("com.haulmont.cuba.security.entity"); addEntityPackage("com.haulmont.cuba.core.entity"); addEntityPackage("com.haulmont.cuba.gui.data.impl.testmodel1"); setViewConfig("/com/haulmont/cuba/gui/data/impl/testmodel1/test-views.xml"); setupInfrastructure(); metadataSession = metadata.getSession(); dataSupplier = new TestDataSupplier(); dataSupplier.commitCount = 0; new NonStrictExpectations() { @Mocked ClientConfig clientConfig; @Mocked PersistenceHelper persistenceHelper; { configuration.getConfig(ClientConfig.class); result = clientConfig; clientConfig.getCollectionDatasourceDbSortEnabled(); result = true; persistenceManager.getMaxFetchUI(anyString); result = 10000; PersistenceHelper.isNew(any); result = false; } }; }