play项目加插件_使用多个版本的Play测试您的插件

play项目加插件

因此,您已经为Play编写了一个插件……确定可以正常工作吗?

最近,我一直对Deadbolt表示爱意,作为工作的一部分,我添加了一个用于功能测试的测试应用程序。 这是一个使用Deadbolt所有功能的应用程序,由REST-Assured进行的HTTP调用驱动。 最初,它基于Play 2.3.5,但是它忽略了2.3.1到2.3.4的受支持Play版本。 此外,Typesafe Play团队的那些努力工作的人会不断探索新的功能丰富的版本。

最重要的是,需要对Scala 2.10.4和2.11.1的支持,因此需要跨Scala版本测试。

显然,仅针对Play的单个版本测试插件是不够的。 似乎某种持续集成可以在这里帮助我们……

在Travis CI上构建

Deadbolt建立在Travis CI的基础上, Travis CI是一个出色的CI平台,对开源项目免费提供。 这将运行测试,并将快照版本发布到Sonatype。 我不会对此进行详细介绍,因为Cake Solutions已经提供了很好的指南。 您可以在此处找到该指南: http : //www.cakesolutions.net/teamblogs/publishing-artefacts-to-oss-sonatype-nexus-using-sbt-and-travis-ci-此处...

我对构建脚本进行了一些更改,因为插件代码不在存储库的顶层。 相反,它位于下一层。 存储库如下所示:

deadbolt-2-java
  |-code        # plugin code lives here
  |-test-app    # the functional test application

结果,定义构建的.travis.yml文件如下所示。

language: scala
jdk:
- openjdk6
scala:
- 2.11.1
script:
- cd code
- sbt ++$TRAVIS_SCALA_VERSION +test
- cd ../test-app
- sbt ++$TRAVIS_SCALA_VERSION +test
- cd ../code
- sbt ++$TRAVIS_SCALA_VERSION +publish-local
after_success:
- ! '[[ $TRAVIS_BRANCH == "master" ]] && { sbt +publish; };'
env:
global:
- secure: foo
- secure: bar

这将设置Java版本(当我不提供与Java 6兼容的版本时,人们会很生气),并将脚本定义为构建过程。 请注意用于在插件目录和test-app目录之间切换的cd命令。

该脚本已经满足了跨Scala版本的要求-在命令前面加上+,例如+test ,将针对您build.sbt中定义的所有Scala版本执行该命令。 重要的是要注意,尽管在.travis.yml中仅定义了Scala 2.11.1,但SBT本身将负责根据build.sbt设置当前的构建版本。

crossScalaVersions := Seq("2.11.1", "2.10.4")

测试Play的多个版本

但是,在test-app / project / plugins.sbt中,test-app使用的Play版本仍被硬编码为2.3.5。

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.5")

令人高兴的是,.sbt文件不仅是配置文件,而且是实际的代码。 这意味着我们可以根据环境属性更改Play版本。 给出了默认值2.3.5,以允许测试在本地运行而无需设置版本。

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % System.getProperty("playTestVersion", "2.3.5"))

最后,我们更新.travis.yml以利用这一点。

language: scala
jdk:
- openjdk6
scala:
- 2.11.1
script:
- cd code
- sbt ++$TRAVIS_SCALA_VERSION +test
- cd ../test-app
- sbt ++$TRAVIS_SCALA_VERSION -DplayTestVersion=2.3.1 +test
- sbt ++$TRAVIS_SCALA_VERSION -DplayTestVersion=2.3.2 +test
- sbt ++$TRAVIS_SCALA_VERSION -DplayTestVersion=2.3.3 +test
- sbt ++$TRAVIS_SCALA_VERSION -DplayTestVersion=2.3.4 +test
- sbt ++$TRAVIS_SCALA_VERSION -DplayTestVersion=2.3.5 +test
- cd ../code
- sbt ++$TRAVIS_SCALA_VERSION +publish-local
after_success:
- ! '[[ $TRAVIS_BRANCH == "master" ]] && { sbt +publish; };'
env:
global:
- secure: foo
- secure: bar

这意味着在构建过程中将执行以下步骤:

  • sbt ++ $ TRAVIS_SCALA_VERSION +测试
    • 针对Scala 2.11.1运行插件测试
  • sbt ++ $ TRAVIS_SCALA_VERSION -DplayTestVersion = 2.3.1 +测试
    • 针对Scala 2.11.1和Play 2.3.1运行test-app的功能测试
  • sbt ++ $ TRAVIS_SCALA_VERSION -DplayTestVersion = 2.3.2 +测试
    • 针对Scala 2.11.1和Play 2.3.2运行test-app的功能测试
  • sbt ++ $ TRAVIS_SCALA_VERSION -DplayTestVersion = 2.3.3 +测试
    • 针对Scala 2.11.1和Play 2.3.3运行test-app的功能测试
  • sbt ++ $ TRAVIS_SCALA_VERSION -DplayTestVersion = 2.3.4 +测试
    • 针对Scala 2.11.1和Play 2.3.4运行test-app的功能测试
  • sbt ++ $ TRAVIS_SCALA_VERSION -DplayTestVersion = 2.3.5 +测试
    • 针对Scala 2.11.1和Play 2.3.5运行test-app的功能测试

如果所有这些步骤都通过,将执行构建脚本的after_success分支。 如果任何步骤失败,则构建将中断并且快照将不会发布。

翻译自: https://www.javacodegeeks.com/2014/10/testing-your-plugin-with-multiple-version-of-play.html

play项目加插件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值