我是测试新手,在开始使用 TDD 方面需要一些帮助。我有一个简单的应用程序,它获取一些 txt 文件并针对不同的输出重新格式化它们。
这里是一个txt文件的例子
Smith | Steve | D | M | Red | 3-3-1985
Bonk | Radek | S | M | Green | 6-3-1978
Bouillon | Francis | G | M | Blue | 6-3-1975
这是我在 app.rb 中更改此文本文件输出的方法
def pipe
alpha = File.readlines('pipe.txt').sort
alpha.each {|line| line.gsub! '-', '/'}
alpha.each {|line| line.gsub! '|', ''}
alpha.each {|line| line.gsub! 'M', 'Male'}
end
def pipe_date
alpha = File.readlines('pipe.txt')
alpha.each {|line| line.gsub! '-', '/'}
alpha.each {|line| line.gsub! '|', ''}
alpha.each {|line| line.gsub! 'M', 'Male'}
alpha.sort_by { |str| Date.strptime(str[/\d+\/\d+\/\d+/], "%d/%m/%Y") }
end
def pipe_des
alpha = File.readlines('pipe.txt').sort { |a,b| b <=> a }
alpha.each {|line| line.gsub! '-', '/'}
alpha.each {|line| line.gsub! '|', ''}
alpha.each {|line| line.gsub! 'M', 'Male'}
end
环顾四周后,我写了一个看起来像这样的 test.rb
文件,但是当我运行 ruby test.rb
时,我得到了这个错误
MiniTest::Unit::TestCase is now Minitest::Test. From /Users/pacloan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/test/unit/testcase.rb:8:in `<module:Unit>'
/Users/pacloan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/test/unit.rb:676:in `<class:Runner>': undefined method `_run_suite' for class `Test::Unit::Runner' (NameError)
这是我的 test.rb 文件。我认为我的设置可能是错误的。有人可以提供一些关于我在做什么的见解吗?
require_relative "app"
require 'minitest'
require 'test/unit'
require 'minitest/autorun'
Minitest::Test
class TestApp < Test::Unit::TestCase
def test_read_files
#assert something
#expected output
end
end
最佳答案
您所做的一切都是正确的。
您有一些小的语法项需要修复。
当您需要测试文件时,通常只需要minitest/autorun
,而不是test/unit
。 (Minitest 是较新 Ruby 版本的典型代表,test/unit 是较旧 Ruby 版本的典型代表)。
您可以删除这些行:
require 'minitest'
require 'test/unit'
还有这一行:
Minitest::Test
改变这个:
class TestApp < Test::Unit::TestCase
对此:
class TestApp < Minitest::Test
这是新语法。
您可以像这样验证您的 Ruby 是最新的(版本 2.2.x):
$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
您可以像这样验证您的 minitest gem 是最新的(版本 5.5.x):
$ gem list minitest
minitest (5.5.1)
请注意,许多现有的测试教程显示的是旧语法。如果您尝试在较新的系统上运行较旧的语法,您可能会看到警告和错误,例如“TestCase is now Test”或“MiniTest now Minitest”。
关于ruby - 使用 Ruby 进行测试驱动开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28002495/