我的目标是启动我的 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编织?
答案 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测试)