在运行测试时播放2.1 /考虑javaagent

时间:2013-05-07 12:21:11

标签: playframework-2.0 sbt aspectj playframework-2.1 javaagents

我的目标是启动我的 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命令通过命令行启动它们。

首先,我阅读this帖子处理将任何javaagent添加到Play应用程序的方法。

因此,我修改了我的Play build文件,添加了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的方面J编织。 但是,由于test-only启动了另一个过程,这肯定是逻辑......

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

1 个答案:

答案 0 :(得分: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测试)