调用单个测试但不能在MiniTest中运行所有测试

时间:2014-08-19 13:09:06

标签: unit-testing rake jruby minitest

我在jruby-1.7.13中从测试单元切换到MiniTest。我也使用mocha / integration。我的问题是运行' rake test'调出Mocha :: ExpectationError:意外调用:MyClass.new。使用MyClass.new,在lib文件夹中定义一个类,并在测试类中使用。我发现单独运行测试工作得很好。它看起来像是时间或序列问题。我尝试通过使用setup / teardown在每次单个测试之前启动MyClass.new来规避它,但这没有用。我是否必须模拟/存根MyClass.new?

2 个答案:

答案 0 :(得分:0)

假设您使用的是Rails 4,则需要将以下内容添加到config/application.rb

config.autoload_paths += %W(#{config.root}/lib)

杀死Spring / Zeus / Spork,重新运行测试,它应该可以工作。

答案 1 :(得分:0)

helper.rb示例代码......

require 'rubygems'
require 'bundler'

begin
  Bundler.setup(:default, :development)
rescue Bundler::BundlerError => e
  $stderr.puts e.message
  $stderr.puts "Run `bundle install` to install missing gems"
  exit e.status_code
end

require 'minitest/spec'
require 'minitest/autorun'
require 'mocha/integration'

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'dibta-modbus-adapter'
require 'dibta-interface'

class MiniTest::Test
  def test_order
    :alpha
  end
  def self.runnable_methods
    methods = methods_matching(/^test_/)

    case self.test_order
    when :random, :parallel then
      max = methods.size
      methods.sort.sort_by { rand max }
    when :alpha, :sorted then
      methods.sort   ## note: Runnable is shuffeled in minitest.rb
    else
      raise "Unknown test_order: #{self.test_order.inspect}"
    end
  end
end

如你所见,我开始修改test_order和runnable_methods ....

取决于测试失败的种子“数量”。在某些情况下(使用特殊的种子编号),测试甚至可以通过。