从詹金斯自动坦诚

时间:2012-12-20 07:54:37

标签: jenkins continuous-integration cucumber automated-tests frank

我正在尝试使用Frank自动化jenkins的测试会话。

这是我收到的错误消息。

  (Frank::Cucumber::FrankNetworkError)
  ./step_definitions/test_steps.rb:30:in `/^I navigate to button V\303\244der$/'
  test.feature:41:in `When I navigate to <link>'
  | Radar       | Norrland    |


  *********************************************
  Oh dear. Your app fell over and can't get up.
  *********************************************

Jenkins从git中检出代码,除此之外我还添加了一个shell命令,如下所示。

cd ios    #<--this is so that I go to the root folder, the one with the .xcodeproj project
frank setup
frank build
frank launch
mv features/*.feature Frank/features/.  #<--- this is the testscript
mv features/step_definitions/*.rb Frank/features/step_definitions/.   #<--here it is moved to the newly created frank/features & Frank/features/step_definitions folder
cd Frank/features
cucumber test.feature 

一切都按照应有的方式构建,如果我去服务器的话 并且手动键入shell命令的最后一行将执行测试。

最好的问候

2 个答案:

答案 0 :(得分:0)

我个人在Mac上运行Jenkins时遇到了很多问题。特别是如果您使用Jenskins Mac映像安装程序,Jenkins总是在安装期间创建的“jenkins”用户下运行。

这给我带来了许多令人头痛的问题,从内部工作运行黄瓜或启动iOS模拟器。

我终于学会了在我自己的用户下启动Jenkins,就像这样: “nohup java -jar /Applications/Jenkins/jenkins.war --httpPort = 8080

从那以后,我能够毫无问题地运行黄瓜。希望这会有所帮助。

答案 1 :(得分:0)

每次应用程序崩溃时都会发生这种情况。当应用程序崩溃时,坦率地停止接收事件,黄瓜以你看到的错误结束。

有两个可能的原因:

  1. 您的应用中存在导致应用崩溃的错误
  2. Frank有一个让您的应用崩溃的错误
  3. 您应该检查崩溃/应用程序日志以查看确切原因。

    我了解到,通过jenkins作业捕获应用程序日志非常有用,例如:

    function grab_log_and_fail {
        APP_NAME = "MyApplication"
    
        # get the PID of the last process with the given name
        PID=$( cat /var/log/system.log | grep "$APP_NAME\[" | tail -n 1 | sed -e "s/^.*$APP_NAME\   [\([^\]*\)\].*/\1/g" )
    
        # grab all the messages from the process with the PID
        cat /var/log/system.log | grep "$APP_NAME\[$PID\]" >"$WORKSPACE/$APP_NAME.log"
    
        #fail the job
        exit 1
    }
    

    您可以使用

    调用它
    cucumber test.feature || grab_log_and_fail
    

    (仅当黄瓜以错误结束时才会获取日志)