【问题标题】:MiniTest suite only running two out of 4 testcase filesMiniTest 套件仅运行 4 个测试用例文件中的两个
【发布时间】:2014-05-15 01:28:34
【问题描述】:

我有一个用 Ruby 1.9.3(最新稳定的 Windows RubyInstaller)编写的 TDD 解决方案。

应用程序位于 app 目录和同级测试目录中,我有 4 个包含测试的文件。

我有一个 Rakefile 执行仅包含测试用例文件的 MiniTest 测试套件。 需要'rake/testtask'

Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = FileList['test/ts_*.rb']
  t.verbose = true
end

ts_test_suite.rb:

gem 'minitest'
require_relative 'tc_requirement_tests.rb'
require_relative 'tc_command_tests.rb'
require_relative 'tc_movement_tests.rb'
require_relative 'tc_placement_tests.rb'

当我从命令行执行 rake test 时,4 个文件中的 2 个成功执行,并且(出于某种奇怪的原因)其他两个没有被执行。 tc_requirement_tests.rb 是这两个文件之一:

require 'test_base.rb'
require './app/turn_to.rb'
require './app/direction.rb'

class RequirementTests < TestBase
  def requirement_test_1
    @bad_robot.place(0, 0, Direction::NORTH)
    @bad_robot.move
    assert_equal "Output: 0,1,NORTH", @bad_robot.report_posture
  end

  def requirement_test_2
    @bad_robot.place(0, 0, Direction::NORTH)
    @bad_robot.turn(TurnTo::LEFT)
    assert_equal "Output: 0,0,WEST", @bad_robot.report_posture
  end

  def requirement_test_3
    @bad_robot.place(1, 2, Direction::EAST)
    @bad_robot.move
    @bad_robot.move
    @bad_robot.turn(TurnTo::LEFT)
    @bad_robot.move
    assert_equal "Output: 3,3,NORTH", @bad_robot.report_posture
  end
end

如果我故意在两个未执行的测试用例文件之一中放置语法错误,Rake 会抱怨预期的错误消息,所以我知道它正在“看到”该文件。

知道为什么 4 个测试用例文件中有 2 个没有被执行吗?

【问题讨论】:

  • 如果重命名测试以使其以“test_”开头会发生什么情况?我不知道这个特定的框架,但我使用的其他框架要求测试名称以“test_”开头
  • 感谢塞巴斯蒂安。所有 4 个测试文件都以“tc_”开头。只有 2 个不工作
  • 我指的是测试本身的名称,而不是文件。具体来说,如果您将这个特定文件中的测试方法重命名为“test_requirement_3”“test_requirement_1”等会发生什么。
  • 谢谢塞巴斯蒂安,就是这样!现在正在执行测试。如果您想将此添加为答案,我会将其标记为这样。

标签: ruby-on-rails ruby


【解决方案1】:

听起来您的测试框架需要以test_ 开头的测试函数名称。尝试重命名您的测试函数,使其格式为 test_requirement_1test_requirement_2 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2013-05-11
    • 2014-03-25
    • 1970-01-01
    相关资源
    最近更新 更多