2012-08-15 24 views
3

我必须将jbehave与jenkins整合在一起。但我不知道如何做到这一点。我看到我必须在詹金斯创造一项任务,但我不知道我应该在哪里布置这项任务。jbehave与jenkins的整合

有人可以帮我吗?

感谢,

萨朗

+1

你如何从命令行运行JBehave?只需要将它作为“Execute shell”或批处理命令添加到Jenkins作业中即可。 – 2012-08-15 15:55:32

+0

不。我有一个POM文件,我认为我必须在那里放置一些东西来实现自动化测试用例的运行。你怎么看? – 2012-08-15 20:08:33

+0

找出如何从命令行(例如mvn编译测试)运行POM并使用“执行shell”步骤(在Freestyle作业类型中),或者创建Maven作业类型并添加“编译测试”作为目标。 – 2012-08-16 09:12:23

回答

5

所以我假设你有JBehave与Maven集成,正确吗? 简单的构建环境,可设置如下:

  1. 转到詹金斯,并添加类型的新工作“建立了maven2/3项目”
  2. 配置您的项目,您从任何来源仓库检出你用。
  3. 配置项目的构建阶段以运行您需要的任何Maven目标(“安装”可能会工作)
  4. 点击保存,您将有一个工作项目,其执行方式与命令行完全相同。

如果你想看到詹金斯很好地呈现JBehave测试输出你也应该遵循这些步骤来配置詹金斯/的xUnit插件:http://jbehave.org/reference/stable/hudson-plugin.html

您还需要确保您的项目配置为在StoryReporterBuilder中使用XML输出格式来使用插件(在上面的说明中没有提到)。

+1

我有Jbehave与Maven集成,我有三个执行标签,其插件的artifactId是 jbehave-maven-plugin。第一次执行的目标是运行故事作为嵌入式,然后是地图故事嵌入式和最终报告步进式嵌入式嵌入式。这个pom来自位于JBehave网站上的etsy.com项目,例如。这是完美的。现在,我如何设置哪些故事将通过Jenkins运行?并且不覆盖方法storyPaths?你在找我吗? – 2012-10-15 14:31:16

0

根据您的意见,要指定故事使用Maven插件时通过詹金斯运行。以下是一种方法:

创建一个StoryFinder的子类,并将其设置为您的Maven configuration中的storyFinderClass属性。在Jenkins命令行启动器中,您可以将故事作为-D系统属性传递,然后可以从StoryFinder中读取。

命令行

mvn ... -Dcom.sarang.stories="foo.story,bar.story" 

Maven的

<plugin> 
    <groupId>org.jbehave</groupId> 
    <artifactId>jbehave-maven-plugin</artifactId> 
    <version>[version]</version> 
    <executions> 
     <execution> 
      <id>run-stories-as-embeddables</id> 
      <phase>integration-test</phase> 
      <configuration> 
       ... 
       <systemProperties> 
        <property> 
         <name>com.sarang.stories</name> 
         <value>${com.sarang.stories}</value> 
        </property> 
       </systemProperties> 
       <storyFinderClass>com.sarang.MyStoryFinder</storyFinderClass> 
      </configuration> 
      <goals> 
       <goal>run-stories-as-embeddables</goal> 
       ... 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

StoryFinder

package com.sarang; 

import org.jbehave.core.io.StoryFinder; 
import java.util.*; 

public class MyStoryFinder extends StoryFinder { 
    @Override 
    protected List<String> scan(String basedir, List<String> includes, 
      List<String> excludes) { 
     //List<String> defaultStories = super.scan(basedir, includes, excludes); 
     String myStories = System.getProperty("com.sarang.stories"); 
     return Arrays.asList(myStories.split(",")); 
    } 
}