Тестирование playframework 2.4 с внедрением пружинных данных из Eclipse Scala IDE
Я хочу изучить и попытаться настроить проект, используя
- игровые рамки 2.4
- ДЖАВА
- Весенние данные
- Eclipse IDE
Я взял "мое вдохновение" от
- https://github.com/jtdev/play-scala-spring-data-jpa, показывающий, как загружать данные пружины с помощью guice.
- мультипроект, показывающий конфигурацию подпроекта (поскольку я хотел бы использовать по крайней мере два приложения, которые имеют общую кодовую базу, но должны быть упакованы отдельно, чтобы иметь возможность развертываться на разных машинах)
Мне удалось успешно activator run
мой первый подпроект, который является JAVA-портом https://github.com/jtdev/play-scala-spring-data-jpa. Магия впрыска из данных пружины работает для приведенного примера (models.PersonRepository
) как это должно.
Теперь я застрял, когда дело доходит до тестирования. Я не могу настроить тестовый класс и ввести models.PersonRepository
когда я хочу загрузить и протестировать класс контроллера (например, функциональный тест controllers.Application
), но только при выполнении теста (ов) ядра моего подпроекта из Eclipse IDE (ядро - это проект eclipse, созданный путем выполнения activator eclipse
). дела activator test
работает, и тест, показанный ниже, проходит успешно.
public class ApplicationTest extends WithApplication {
@Inject private PersonRepository repo;
@Inject Application application;
@Before
public void setup() {
// Here supposes to happen more to make PersonRepository injection work when running JUnit tests out of Eclipse IDE
GuiceApplicationBuilder builder = new GuiceApplicationLoader()
.builder(new Context(Environment.simple()));
Guice.createInjector(builder.applicationModule()).injectMembers(this);
}
@After
public void teardown() {
Helpers.stop(application);
}
@Test
public void testInjection() {
assertNotNull(repo);
}
Хотя я работал над тестовыми страницами руководства по игровой рамке ( начиная здесь), я не смог найти ничего полезного.
Как я получаю эту ошибку при тестировании из Eclipse IDE,
com.google.inject.ConfigurationException: Guice configuration errors:
1) No implementation for models.PersonRepository was bound.
while locating models.PersonRepository
for field at core.ApplicationTest.repo(ApplicationTest.java:32)
while locating core.ApplicationTest
так что я думаю, что проблема в том, что я должен обратиться к конфигурации приложения моего подпроекта (core/conf/core-application.conf
), который включает модуль Guice Spring для моего подпроекта. Во-вторых, я должен убедиться, что configs.AppConfig
загружен соответствующим образом, так как этот класс управляет конфигурацией данных пружины.
Поскольку я абсолютно новичок во всем этом, возможно, кто-то может мне помочь, показав
- что нужно сделать, чтобы мои тесты также работали при запуске Eclipse IDE (плагин Scala IDE)
- как заставить предоставленный тестовый класс использовать выделенную тестовую базу данных в памяти (обязательно не используя ту, которая была определена для моего подпроекта
core/conf/META-INF/persistence.xml
).
Полный исходный код здесь
РЕДАКТИРОВАТЬ Я обнаружил, что classpath отличается при использовании теста JUnit из Eclipse IDE вместо activator test
, поэтому я предполагаю, что это причина, почему инъекция не работает.
# Classpath output was sorted before
$ diff activatorCP eclipseCP
0a1
>
88,89d88
< /h/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.6.jar
< /h/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.11.6.jar
130,136c129,131
< /h/.sbt/boot/scala-2.10.5/org.scala-sbt/sbt/0.13.9/test-agent-0.13.9.jar
< /h/.sbt/boot/scala-2.10.5/org.scala-sbt/sbt/0.13.9/test-interface-1.0.jar
< /h/workspace/springtest/core/target/scala-2.11/classes/
< /h/workspace/springtest/core/target/scala-2.11/test-classes/
< /h/workspace/springtest/core/target/web/classes/main/
< /h/workspace/springtest/core/target/web/classes/test
< /h/workspace/springtest/core/target/web/public/test/
---
> /h/workspace/springtest/core/bin/
> /opt/eclipse-mars/configuration/org.eclipse.osgi/213/0/.cp/
> /opt/eclipse-mars/configuration/org.eclipse.osgi/214/0/.cp/
Поскольку я создал проект Eclipse, используя activator compile eclipse
Мне интересно, что еще мне нужно сделать, чтобы получить соответствующие пути к классам
1 ответ
Разница в поведении произошла от настройки параметров JAVA в проектах build.sbt
позволяющий activator test
бежать правильно. Эти настройки должны быть перенесены вручную в конфигурацию выполнения проекта Eclipse. После этого тесты из Eclipse IDE также успешно запускаются.