Из вашего вопроса я предполагаю, что есть некоторое недопонимание...
ScoutServerTestRunner
и @ServerTest
чем-то похожи на ClientServerTestRunner
и @ClientTest
, но для сервера. Он понадобится вам для тестов, тестирующих сервер.
Классы находятся в комплекте org.eclipse.scout.rt.testing.server
.
Если в клиентском тесте вам нужен сервер, у вас есть две возможности:
А/ Запустить сервер
Вы можете запустить сервер
Вероятно, это будет не обычный сервер (тот, что в продакшене), потому что вы хотите контролировать базу данных или некоторые внешние службы. Аутентификация также может немного отличаться (чтобы контролировать ее и иметь что-то совместимое с вашими тестами).
Для интеграции в вашу сборку maven можно использовать подключаемый модуль maven-cargo для запуска вашего сервера перед выполнением набора клиентских тестов.
B/ Моделирование серверных служб
Каждый вызов службы, который создает ProxyService, вызывающий сервер, может быть заменен фиктивным (только для клиента).
Это предпочтительный способ модульного тестирования, поскольку вы не полагаетесь на развернутый сервер. Вы также можете определить для каждого теста, каким будет ответ сервера. Это решение требует, вероятно, изначально больше работы, но, на мой взгляд, оно того стоит.
Для регистрации альтернативной службы вы можете использовать:
TestingUtility.registerServices(
<activator instance>,
<priority>,
<service instances>
);
Выигрывает сервис с более высоким приоритетом.
В каждом тесте не забывайте отменять регистрацию альтернативных сервисов, которые вы зарегистрировали.
SmartFields используют CodeTypes или LookupCalls. В случае LookupCall
LookupCall
, вероятно, вызывает сервер через LookupService
. В случае CodeType
SmartField
внутренне использует класс CodeLookupCall
, полагаясь на ICodeService
.
В обоих случаях, если вы хотите запустить тест без сервера, вам необходимо убедиться, что клиент использует альтернативные реализации необходимых служб, которым требуется сервер.
person
Jmini
schedule
11.03.2015