Play 2.1 / с учетом javaagent при выполнении тестов

Моя цель — запустить интеграционные тесты, содержащиеся в моем приложении 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.

Таким образом, я изменяю файл build моего Play следующим образом, добавляя javaagent Spring:

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. Но это, безусловно, логично, так как test-only запускает другой процесс...

Есть ли способ заставить мой тест заботиться о плетении аспектов с помощью javaagent?


person Mik378    schedule 07.05.2013    source источник
comment
Взгляните на этот вопрос: stackoverflow.com/questions/15201034/   -  person Igor Romanov    schedule 08.05.2013
comment
@Игорь Романов Круто ;)   -  person Mik378    schedule 08.05.2013


Ответы (1)


Благодаря ссылке, предоставленной @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 

Это позволяет применять переплетение во время загрузки для класса, работающего с аспектом Springj.

Все работает довольно хорошо :) (проверено с SBT 0.12.3, Scala 2.10 и Play 2.1)

person Mik378    schedule 08.05.2013