【发布时间】:2014-01-04 00:20:39
【问题描述】:
有些测试需要互联网连接,有些则不需要。因此,它们被分为两个具有不同文件名模式的测试组。如何在 Rakefile 下进行更新,以便它们可以与不同的 rake 任务分别运行?
似乎问题/答案here 在这种情况下没有帮助。
无论在命令行上调用了哪些 rake 任务,下面的 rakefile 都会运行所有测试用例。 rake test 和 rake 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