Java 播放2.4.6,为测试中的字节码增强配置生成设置

Java 播放2.4.6,为测试中的字节码增强配置生成设置,java,testing,playframework,ebean,playframework-2.4,Java,Testing,Playframework,Ebean,Playframework 2.4,我将PlayFramework2.4.6与Ebean和Java一起使用 运行测试时,无法设置任何字段的值。我认为字节码增强(自动生成getter/setter)不起作用 我的测试(保持冷静,框架应该将getter/setter放在“name”中): 我尝试使用save()而不是update(),但没有得到想要的结果 试验失败;输出: [error] Test IntegrationTest.createAndUpdate failed: expected:<[another name]&g

我将PlayFramework2.4.6与Ebean和Java一起使用

运行测试时,无法设置任何字段的值。我认为字节码增强(自动生成getter/setter)不起作用

我的测试(保持冷静,框架应该将getter/setter放在“name”中):

我尝试使用
save()
而不是
update()
,但没有得到想要的结果

试验失败;输出:

[error] Test IntegrationTest.createAndUpdate failed: expected:<[another name]> but was:<[Spongebob Squarepants]>, took 0.228 sec

你发布的两个参考资料都非常过时。你应该。请特别注意有关的部分。此外,在使用时还存在一些限制:

增强器查找Java类上的所有字段:

  • 公开
  • 它们是非静态的
  • 是非最终的
对于这些字段中的每一个,如果它们不存在,它将生成一个getter和setter。如果您希望为一个字段提供一个自定义的getter或setter,这可以通过编写它来实现,如果getter或setter已经存在,则Play enhancer将跳过它的生成

因此,检查class
Usuario
中的属性是否满足这些条件

编辑后:

我已将您的
find
声明更改为以下行:

public static Find<Long, Usuario> find = new Finder<>(Usuario.class);
这是
build.sbt
的内容:

name := """test"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs,
  "junit" % "junit" % "4.12" % Test
)

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator

testOptions += Tests.Argument(TestFrameworks.JUnit, "-v", "-q")
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6")

addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "2.0.0")
以及
项目/plugins.sbt
的内容:

name := """test"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs,
  "junit" % "junit" % "4.12" % Test
)

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator

testOptions += Tests.Argument(TestFrameworks.JUnit, "-v", "-q")
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6")

addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "2.0.0")

你发布的两个参考资料都非常过时。你应该。请特别注意有关的部分。此外,在使用时还存在一些限制:

增强器查找Java类上的所有字段:

  • 公开
  • 它们是非静态的
  • 是非最终的
对于这些字段中的每一个,如果它们不存在,它将生成一个getter和setter。如果您希望为一个字段提供一个自定义的getter或setter,这可以通过编写它来实现,如果getter或setter已经存在,则Play enhancer将跳过它的生成

因此,检查class
Usuario
中的属性是否满足这些条件

编辑后:

我已将您的
find
声明更改为以下行:

public static Find<Long, Usuario> find = new Finder<>(Usuario.class);
这是
build.sbt
的内容:

name := """test"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs,
  "junit" % "junit" % "4.12" % Test
)

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator

testOptions += Tests.Argument(TestFrameworks.JUnit, "-v", "-q")
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6")

addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "2.0.0")
以及
项目/plugins.sbt
的内容:

name := """test"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs,
  "junit" % "junit" % "4.12" % Test
)

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator

testOptions += Tests.Argument(TestFrameworks.JUnit, "-v", "-q")
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6")

addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "2.0.0")

非常感谢。我查过我的课了。它和文档状态一样,除了用于访问Finder实例的静态字段(但我从Play guide中获取了该字段的代码)之外,它是否工作?如果没有,请发布Usuario类的代码。不幸的是,它不起作用。该类已经如文档所示。请发布代码,以便我们可以查看它是否与增强相关。几乎我所有的配置都与您的类似。只有
build.sbt
中的
testOptions
缺失;但是我的测试仍然失败:(我有一些额外的配置使它在Eclipse中工作。当然,我会创建一个新的clean项目,然后再试一次。谢谢。我已经检查了我的类。它与文档状态一样,除了用于访问Finder实例的静态字段(但我从Play guide中获取了该字段的代码)。它是否工作?如果没有,请发布Usuario类的代码。不幸的是,它没有工作。该类已经如文档所示。请发布代码,以便我们可以查看它是否与增强相关。几乎我的所有配置都与您的配置一样。只有
build.sbt
中的
测试选项
缺失;但我的测试仍在失败:(我有一些额外的配置以使它在Eclipse中工作。当然,我会创建一个新的clean项目,然后再试一次。除了您的
find
声明(我将其更改为
static
以通过编译)之外,一切都按照我的预期工作。您使用的是哪个数据库?您的
ebean.default
配置如何打开(位于
conf/application.conf
文件)?很抱歉,查找字段从一开始就是静态的。我犯了一个错误,但我将编辑描述。除了您的
find
声明(我将其更改为
static
以通过编译)之外,所有操作都按照我的预期进行。您使用的是哪个数据库?您的
ebean.default
配置如何(位于
conf/application.conf
文件)?很抱歉,find字段从一开始就是静态的。我犯了一个错误,但我将编辑描述。