0

我目前正在研究 TeamCity 以及如何让我们的 Ruby 测试运行。使用命令行或 Rake 构建器时,我可以很好地运行测试。我现在要解决的问题有两个:

在我之前的一项工作中,我们还依靠 TeamCity 来运行我们的 .NET 测试。为此,我们使用了 Nant,我们可以跟踪测试期间运行的查询数量以及这些查询的平均执行时间。

我现在正在尝试对我的 Ruby 项目做同样的事情。所以我要解决的第一个合乎逻辑的步骤是,如何使用 Ant运行例如RSpecCucumber测试? 我尝试查看 Ant 本身并稍微掌握它,但我找到的所有示例都是针对我们不使用的 jRuby 的。我们依赖 RVM 和正常的 Ruby 安装。

问题的第二部分是,如何跟踪运行的查询数量及其执行时间?我猜可能有一个宝石可以跟踪它或某种全局变量。希望以某种方式将此信息输出回 TeamCity。

编辑

好的,所以我设法让我的 TeamCity 服务器使用 Ant 运行。这是我正在使用 atm 的 XML:

   <?xml version="1.0"?>
   <project name="rubycas" default="init">
       <description>
           This buildfile is used to build the RubyCAS project under TeamCity and run the required tasks to validated
           whether the project is stable and fully functional.
       </description>
       <property name="test_type" value="cucumber" />

       <target name="init">
          <echo message="##teamcity[testStarted name='Rubycas']" />

          <condition property="cucumberBool">
               <equals arg1="${test_type}" arg2="cucumber" />
          </condition>

          <condition property="rspecBool">
               <equals arg1="${test_type}" arg2="rspec" />
           </condition>
       </target>

       <target name="rspec" if="rspecBool" depends="init">
           <exec executable="rspec" outputproperty="result">
               <arg value="--require teamcity/spec/runner/formatter/teamcity/formatter" />             <arg value="--format Spec::Runner::Formatter::TeamcityFormatter" />
           </exec>
           <echo message="${result}" />
       </target>

       <target name="cucumber" if="cucumberBool" depends="init">
           <exec executable="cucumber" outputproperty="result">
               <arg value="--format junit" />
               <arg value="--out results" />
               <arg value="features" />
           </exec>
           <echo message="${result}" />
       </target>
   </project>

现在的问题是,我无法将 RSpec 的输出输入 TeamCity 以识别测试。

4

1 回答 1

1

您可以使用 ant 的 exec 任务来运行任意系统调用,在您的情况下可能是 rspec:

https://ant.apache.org/manual/Tasks/exec.html

类似的东西

<target name="rspec"> <exec executable="rake"> <arg value="spec"/> </exec> </target>

不过,我不知道您的跟踪内容是否适用于此,因为它实际上是在 ant 之外执行命令。

于 2012-09-06T00:37:13.737 回答