Play framework 2.1 junit test не работает с eclipse
im после учебника zentask и написал тест junit,
тест не будет запускаться из Eclipse IDE, что дает следующее исключение.
javax.persistence.PersistenceException: java.lang.IllegalStateException: Class [class play.db.ebean.Model] is enhanced and [class models.User] is not - (you can not mix!!)
at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.setEntityBeanClass(BeanDescriptorManager.java:1475)
at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.createByteCode(BeanDescriptorManager.java:1138)
at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1058)
at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityDeploymentAssociations(BeanDescriptorManager.java:565)
at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:252)
at com.avaje.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:124)
at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:210)
at com.avaje.ebeaninternal.server.core.DefaultServerFactory.createServer(DefaultServerFactory.java:64)
Я немного прочитал и нашел, что для некоторых людей
редактирование buils.scala, добавив следующую строку внутри main: ebeanEnabled: = true
для меня это не закрыло ide running play clean compile
любые идеи
Ответы
Ответ 1
В блоге сообщается о настройке модульных тестов для работы в среде IDE. Он предлагает добавить следующую строку командной строки в java, используемую при выполнении тестов:
-javaagent:/path/to/ebean/ebean-2.7.3-agent.jar
Кажется, что Play не поставляется с ebean-агентом, его следует сначала загрузить с веб-сайта Ebean (в основном пакете ebean).
Я не пробовал.
Руководство пользователя Ebean также упоминает его (раздел 15.5.2 javaagent), есть даже пример для настройки Eclipse.
Кроме того, чтобы ускорить повышение, возможно, это будет лучше:
-javaagent:/path/to/ebean/ebean-2.7.3-agent.jar;packages=models.*
Таким образом, он будет рассматривать только models.*
(пакет по умолчанию для моделей ORM в Play).
Ответ 2
Вы можете использовать плагин Avaje Ebean Eclipse:
http://www.avaje.org/eclipseupdate/site.xml
После установки активируйте расширение Ebean, щелкнув правой кнопкой мыши на своем проекте и выбрав Enable Ebean Enhancement.
Ответ 3
я получил эту ошибку, когда попытался удалить общедоступный модификатор из объявления одного из классов, расширяющих Model.
Я использовал модель для создания "сквозной" таблицы (отношение многих к многим с дополнительной информацией), поэтому защищенный доступ имеет смысл. возможно, есть еще один способ сделать это, но игра javadoc довольно скудная.