1

我的目标是启动我的Play应用程序中包含的集成测试。

为此,我曾经通过 Intellij 启动它们。这些测试需要 Spring aspectJ 编织,因此我在我的 Intellij 测试中精确地配置了这个 VM 参数:

-javaagent:/Users/myName/.ivy2/cache/org.springframework/spring-instrument/jars/spring-instrument-3.2.2.RELEASE.jar

整个作品。

现在我希望能够通过命令行使用play命令后面的简单命令来启动它们test-only

首先,我阅读了这篇文章,讨论了将任何 javaagent 添加到 Play 应用程序的方法。

因此,我像这样修改我的 Playbuild文件,添加 Spring 的 javaagent:

java ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M ${JAVA_OPTS} -javaagent:/Users/myName/.ivy2/cache/org.springframework/spring-instrument/jars/spring-instrument-3.2.2.RELEASE.jar -Dfile.encoding=UTF-8 -Dplay.version="${PLAY_VERSION}" -Dsbt.ivy.home=`dirname $0`/../repository -Dplay.home=`dirname $0` -Dsbt.boot.properties=`dirname $0`/sbt/sbt.boot.properties -jar `dirname $0`/sbt/sbt-launch.jar "$@"

然而,我的测试只是失败了......抱怨缺少 Spring 的 aspectJ 编织。但这肯定是逻辑,因为test-only启动了另一个进程......

有没有办法让我的测试关心使用 javaagent 编织的 aspectJ?

4

1 回答 1

2

感谢@Igor Romanov 在上述评论中提供的链接,这是我的解决方案:

val myApp = play.Project(appName, appVersion, appDependencies).settings(
    Keys.javaOptions in (Test) +=
     "-javaagent:/Users/myName/.ivy2/cache/org.springframework/spring-instrument/jars/spring-instrument-3.2.2.RELEASE.jar",
    // code remaining 

这允许对处理 Spring 的 aspectj 的类应用加载时编织。

整个工作都很好:)(用 SBT 0.12.3、Scala 2.10 和 Play 2.1 测试)

于 2013-05-08T13:14:58.997 回答