玩框架2.1 junit测试不能从eclipse工作

时间:2013-02-16 18:26:49

标签: java eclipse playframework-2.0 playframework-2.1

我正在关注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

对我而言,它并没有关闭运行play clean编译的ide

任何想法???

3 个答案:

答案 0 :(得分:15)

关于设置要在IDE中运行的单元测试,有blog post。它建议在运行测试时使用以下命令行添加:

-javaagent:/path/to/ebean/ebean-2.7.3-agent.jar

似乎Play没有附带ebean代理,应首先从Ebean网站下载(在主ebean包中)。

我没试过。

Ebean user guide也提到了它( 15.5.2 javaagent 部分),甚至还有配置Eclipse的例子。

另外,为了加快提升速度,这可能会更好:

-javaagent:/path/to/ebean/ebean-2.7.3-agent.jar;packages=models.*

所以它只会查看models.*(Play中ORM模型的默认包)。

答案 1 :(得分:6)

您可以使用Avaje Ebean Eclipse插件:

http://www.avaje.org/eclipseupdate/site.xml

安装完成后,右键单击项目并选择“启用Ebean增强”,激活Ebean增强功能。

答案 2 :(得分:0)

当我试图从扩展Model的类之一的声明中删除public修饰符时,我收到此错误。

我正在使用模型制作一个“通过”表(与其他信息有多对多的关系),因此受保护的访问是有意义的。或许有另一种方法可以做到这一点,但是戏剧javadoc非常稀疏。