1

私の目標は、Playアプリに含まれる統合テストを開始することです。

そのために、Intellij を介してそれらを起動していました。これらのテストにはSpringのaspectJウィービングが必要なので、IntellijテストconfでこのVM引数を正確に記述しました:

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

全体が機能します。

playここで、コマンドに続く単純なコマンドを使用して、コマンドラインからそれらを起動できるようにしたいと考えていますtest-only

最初に、javaagent を Play アプリに追加する方法を扱ったこの投稿を読みました。

buildしたがって、 Spring の javaagent を追加して、Play のファイルを次のように変更します。

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 を使用して、アスペクト J ウィービングをテストで処理する方法はありますか?

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 のアスペクトを扱うクラスにロード時のウィービングを適用できます。

全体がかなりうまく機能します:) (SBT 0.12.3、Scala 2.10、および Play 2.1 でテスト済み)

于 2013-05-08T13:14:58.997 に答える