V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OneAPM
V2EX  ›  Ruby on Rails

如何更简单的执行测试命令 - Rake::TestTask 介绍

  •  
  •   OneAPM · 2015-05-29 10:59:03 +08:00 · 3781 次点击
    这是一个创建于 3464 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Alt text
    通常我们创建一个新的项目的时候,会建立一个 test或者spec的文件夹来存放测试的文件,运行这些测试需要单独的命令,比如在项目目录下执行rspec .或者ruby test.rb等等,这些测试的工具中大多也都提供了更方便的方式来运行这些测试,但是如果你喜欢用Rake的话,那就有另外一个选择Rake::TestTask

    先上代码:

    require "rake/testtask"
    a
    Rake::TestTask.new do |t|
      t.libs << "test"
      t.pattern = "test/*_test.rb"
      t.verbose = true
    end
    

    将以上代码保存或添加到项目目录中的Rakefile,然后在这个目录下执行rake test,你就可以看到如下输出(这里我用的测试框架是Minitest):

    /home/lizhe/.rvm/rubies/ruby-2.2.2/bin/ruby -I"lib:test"  "/home/lizhe/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/rake/rake_test_loader.rb" "test/person_test.rb"
    Run options: --seed 535
    
    ()# Running:
    
    .
    
    Finished in 0.000558s, 1793.5482 runs/s, 1793.5482 assertions/s.
    
    1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
    

    ( 注:Running之前的()是不需要的,这里是因为Markdown的语法问题。)

    如果去掉最上面代码中的t.verbose = true的话:

    require "rake/testtask"
    
    Rake::TestTask.new do |t|
      t.libs << "test"
      t.pattern = "test/*_test.rb"
    end
    

    则输出结果就不会显示执行的ruby命令,如下:

    Run options: --seed 17527
    
    ()# Running:
    
    .
    
    Finished in 0.001629s, 613.9689 runs/s, 613.9689 assertions/s.
    
    1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
    

    ( 注:Running之前的()是不需要的,这里是因为Markdown的语法问题。)

    这里再介绍一下Rake::TestTask的配置选项:

    • libs会被添加到$LOAD_PATH中;
    • pattern 测试文件的名称匹配,还有另外一个叫做test_files,这两个使用哪一个都可以,如果同时使用的话,会合并两者;
    • verbose 输出这个Rake::TestTask执行的具体Ruby命令;
    • options 指定给测试框架的参数,类型为数组,也可以通过传入TESTOPTS命令行参数达到相同的目的;
    • ruby_opts 执行ruby命令时的参数,类型为数组,比如可以在指定为-rtesthelper,避免每个测试文件重复require "test_helper"
    • name Rake Task的名称,默认是test

    还有一点,在我们执行rake test的时候,是可以传入一些参数的,比如我执行执行test/dummy_test.rb这个测试,那么就可以指定TEST参数:

    rake test TEST=test/dummy_test.rb
    

    还可以通过TESTOPTS给你使用的测试框架传入参数,比如Minitest-v-p两个参数,那么就可以这样传进去:

    rake test TESTOPTS="-vp"

    参考链接:

    本文由OneAPM工程师原创文章 ,想阅读更多技术文章,请访问OneAPM官方技术博客

    http://oneapm.com

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3260 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:10 · PVG 20:10 · LAX 04:10 · JFK 07:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.