【问题标题】:Test a specific group of testcases with rake testtask使用 rake testtask 测试一组特定的测试用例
【发布时间】:2014-01-04 00:20:39
【问题描述】:

有些测试需要互联网连接,有些则不需要。因此,它们被分为两个具有不同文件名模式的测试组。如何在 Rakefile 下进行更新,以便它们可以与不同的 rake 任务分别运行?

似乎问题/答案here 在这种情况下没有帮助。

无论在命令行上调用了哪些 rake 任务,下面的 rakefile 都会运行所有测试用例。 rake testrake itest 都不能按预期工作。

当前的 Rakefile 内容是,

require 'rake/testtask'

Rake::TestTask.new do |t|
  t.test_files = FileList['test/test_*.rb']
end

Rake::TestTask.new do |t|
  t.test_files = FileList['test/itest_*.rb']
end

desc "Run tests with no internet required"
task :default => :test

desc "Run tests need internet connection"
task :internet => :test

【问题讨论】:

  • 需要互联网连接的测试可能是错误的集成测试而不是单元测试。单元测试应该只测试一个单独的单元,因此测试连接到互联网的代码以及连接另一端的应用程序远远超出了单元测试的范围。我会在单元测试中模拟远程请求,并将其他所有内容(需要互联网)移动到单独的集成套件中。然后很容易分开运行它们。
  • 我同意你的看法。我已经更新了问题以反映我为实现目标所做的努力,但我仍然无法做到。评论?

标签: ruby unit-testing rake rake-task rakefile


【解决方案1】:

我已经弄清楚如何将不同的 testtask 与不同的 rake 任务相关联。诀窍是在创建新的测试任务时添加任务名称。像这样,

Rake::TestTask.new(:default) do |t|
  t.test_files = FileList['test/test_*.rb']
end

Rake::TestTask.new(:internet) do |t|
  t.test_files = FileList['test/itest_*.rb']
end

desc "No internet connection required"
task :default => :test

desc "Needs internet connection"
task :internet => :test

所以rake internet 只会运行需要互联网连接的测试用例。

【讨论】:

    猜你喜欢
    • 2013-12-07
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多