app тесты
Описание
Для тестирования приложения и его объектов в unit-тестах имеется специальный механизм загрузки приложения.
Приложение при запуске загружается из файла app.cfx
, который обычно лежит в корне
каталога с приложением. Однако для тестов этот механизм не подходит,
т.к. зачастую для различных тестов необходима особая среда запуска.
Кроме того, при тестировании обособленного модуля, ему не нужен полный app.cfx
,
т.к.в нем присутсвуют зависимости, о которых модуль не знает.
Для тестирования объектов в контексте приложения, необходимо создать
наследника от класса jandcode.core.test.App_Test
.
В поле экземпляра app
(тип jandcode.core.test.AppTestSvc
) хранится ссылка
на экземпляр приложения, доступного из этого класса:
import jandcode.core.std.*;
import jandcode.core.test.*;
import org.junit.jupiter.api.*;
public class MyApp1_Test extends App_Test {
@Test
public void test1() throws Exception {
// app - ссылка на приложение: jandcode.core.App
DataDirService svc = app.bean(DataDirService.class);
String p = svc.getPath("mypath");
//...
}
}
При запуске таких тестов загрузка приложения осуществляется из файла test.cfx
, который
ищется в пакете класса с тестом или выше по иерархии пакетов. Первый найденный
файл test.cfx
будет загружен так, как будто это файл app.cfx
.
Таким образом в разных пакетах тестах можно тестировать различные конфигурации приложения.
Если необходимо загрузить основной app.cfx
из test.cfx
, то это можно сделать так:
<root>
<x-include path="#{appdir}/app.cfx"/>
</root>
Если необходимо тестировать обособленный модуль, то в test.cfx
нужно подключить
необходимый модуль и не загружать app.cfx
:
<root>
<x-depends module="my-module1"/>
</root>
Все нужные параметры можно настроить непосредственно в test.cfx
или вынести их
во внешний файл, при необходимости. Например так:
<root>
<!-- подключаем модуль -->
<x-depends module="my-module1"/>
<!-- настраиваем что-то по умолчанию -->
<my-params a1="1"/>
<!-- подключаем внешний _tests.cfx из каталога с приложением для перекрытия параметров-->
<x-include path="#{appdir}/_tests.cfx" require="false"/>
</root>
AppTestSvc
Сервис для тестирования в контексте приложения.
Сохранение конфигурации
Конфигурацию загруженного приложения можно сохранить в файл для последующего анализа:
// записать в файл 'temp/ИМЯ_КЛАССА-ИМЯ_ПАКЕТА.cfx'
app.saveAppConf();
Проблемы при загрузке конфигурации
Загрузка конфгурации приложения делается в методе setUp
.
Если возникают проблемы, то можно включить логгирование setUp
метода для анализа
(см. Логгирование в setUp методе).