ttnt, 在 Rails 上,测试这个,而不是( Google的代码 2015项目在 ruby !

分享于 

6分钟阅读

GitHub

  繁體 雙語
Test This, Not That! (Google Summer of Code 2015 project under Ruby on Rails)
  • 源代码名称:ttnt
  • 源代码网址:http://www.github.com/Genki-S/ttnt
  • ttnt源代码文档
  • ttnt源代码下载
  • Git URL:
    git://www.github.com/Genki-S/ttnt.git
    Git Clone代码到本地:
    git clone http://www.github.com/Genki-S/ttnt
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/Genki-S/ttnt
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    TTNT: 测试这个,而不是 !

    Build StatusCoverage StatusCode ClimateDependency Status

    停止运行那些明显不受你在提交中引入的更改影响的测试 !

    从mentoring年开始,以指导组织 Ruby on Rails 项目开始,并基于 Aaron Patterson的"预测测试失败"文章的思想。

    这个项目的目标是

    Rails/Rails 插件有一个问题,CI构建需要几个小时才能完成。 这个项目旨在解决这个问题,使得只运行与目标 commits/branches/PRs. 中引入的变更相关的测试。

    术语

    • test-to-code映射
      • 将测试( 文件名) 映射到在该测试运行上执行的代码( 文件名和行号)的映射用于给定的提交
      • 这将用于确定受代码更改影响的测试
    • 基本提交
      • 将计算应运行的测试的提交( 比如。 主分支的最新提交:
      • 这里提交应该具有test-to-code映射
    • 目标提交
      • 要在其中选择应该运行的测试的提交( 比如。 你的功能分支的头部)
      • 这里提交不需要有test-to-code映射

    当前状态

    这个项目还处于早期阶段,我们正在尝试解决这个问题的最佳方法。

    当前,这里程序执行以下操作:

    • 使用 $ rake ttnt:test:anchor 生成test-to-code映射
    • 选择与基本提交和当前头之间的更改相关的测试,并运行所选测试

    安装

    将此行添加到你的应用程序的Gemfile中:

    gem 'ttnt'

    然后执行:

     
    $ bundle
    
    
    
     

    或者将它的自己安装为:

    
    $ gem install ttnt
    
    
    
    

    定义Rake任务

    TTNT允许你根据现有的Rake::TestTask 对象来定义它的任务,例如:

    require'rake/testtask'require'ttnt/testtask't =Rake::TestTask.newdo |t|
     t.libs <<'test' t.name ='task_name'endTTNT::TestTask.new(t)

    这将定义 2个任务: ttnt:task_name:anchorttnt:task_name:run 本文档后面将介绍这些任务的用法。

    你还可以实例化一个新的TTNT::TestTask 对象,并指定某些选项,例如:

    require'ttnt/testtask'TTNT::TestTask.newdo |t|
     t.code_files =FileList['lib/**/*.rb'] -FileList['lib/vendor/**/*.rb']
     t.test_files ='test/**/*_test.rb'end

    你可以指定与 Rake::TestTask 相同的选项。 此外,还有一个特定于TTNT的选项:

    • code_files
      • 指定TTNT用来选择测试的代码文件。 这里未列出的文件更改不影响测试选择。 默认为 Rakefile 目录下的所有文件。

    要求

    开发并仅在 ruby 版本 2.2.2下测试。

    用法

    为给定的提交生成test-to-code映射

    如果如上所述定义 TTNT rake任务,则可以运行以下命令来生成test-to-code映射:

    $ rake ttnt:my_test_name:anchor

    选择测试

    如果按照上述描述定义 TTNT rake任务,则可以运行以下命令来运行所选测试。

    $ rake ttnt:my_test_name:run
    命令行选项

    通过设置 ISOLATED 环境变量,可以逐个运行测试文件:

    
    $ rake ttnt:my_test_name:run ISOLATED=1
    
    
    
    

    在独立选项中,可以设置 FAIL_FAST 环境变量,以在测试失败后停止运行连续测试:

    
    $ rake ttnt:my_test_name:run ISOLATED=1 FAIL_FAST=1
    
    
    
    

    当前限制

    • 测试选择算法还不够完善( 它可能产生假阳性和假阴性)
    • 只支持 git
    • 仅支持 MiniTest
    • 只选择测试文件,而不是细粒度测试用例
    • 还有更多 !

    这里 gem 只能生成test-to-code映射"从单个测试文件到执行的代码行"( 不是细粒度映射"从单个测试收费 到代码行")。 这是由于 ruby 库工作的方式。 详细内容包括在我的建议中。

    插件开发

    在签出 repo 之后,运行 bin/setup 安装依赖项。 然后,运行 rake test 来运行测试。 你还可以为交互式提示运行 bin/console,以允许你进行实验。

    若要将这里 gem 安装到本地计算机上,请运行 bundle exec rake install 要发布新版本,请更新 version.rb 中的版本号,然后运行 bundle exec rake release 将为版本创建一个git标记,推送git提交和标签,并将 .gem 文件推送到 rubygems.org

    Bug 报告和拉请求在GitHub的https://github.com/Genki-S/ttnt 欢迎。 这个项目旨在成为一个安全。欢迎的协作空间,贡献者期望遵循 Contributor 规范。

    任何评论都有价值,尤其在这个早期的开发阶段。 我正在收集一些有趣的想法,我不能很快在这里开始工作,在这里是。

    许可证

    许可协议,gem 可以作为开放源代码使用。


    cod  proj  test  rails  THIS  求和  
    相关文章