标签: testunit

Test :: Unit仍然与rails相关吗?

我正在学习Rails这个古老的方式.通过阅读Agile Web Development with Rails(第3版)作为起点.我目前正在教授测试的章节.我也知道其他BDD测试框架,如RSPec.所以我想知道RSpec,Cucumber,Shoulda等框架是否取代了知道/使用Test :: Unit的需要?它们本身是否相关并用于不同目的?

更新:由于我是测试的新手,我也希望获得有关哪些资源对于使用不同框架的方式有用的反馈.

谢谢!

ruby rspec shoulda cucumber testunit

17
推荐指数
3
解决办法
2802
查看次数

如何一次运行多个Rails单元测试

我经常运行各种测试组,如:

rake test:units
rake test:functionals
Run Code Online (Sandbox Code Playgroud)

我还想运行单独的测试文件或单独的测试:

ruby -Itest test/unit/file_test.rb
ruby -Itest test/unit/file_test.rb -n '/some context Im working on/'
Run Code Online (Sandbox Code Playgroud)

还有:

rake test TEST=test/unit/file_test.rb
Run Code Online (Sandbox Code Playgroud)

我甚至在我的Rakefile中创建了自定义分组:

  Rake::TestTask.new(:ps3) do |t|
    t.libs << 'test'
    t.verbose = true
    t.test_files = FileList["test/unit/**/ps3_*_test.rb", "test/functional/services/ps3/*_test.rb"]
  end
Run Code Online (Sandbox Code Playgroud)

我还没想到的是如何在命令行运行多个临时测试.换句话说,我如何将test_files注入rake任务.就像是:

rake test TEST=test/unit/file_test.rb,test/functional/files_controller_test.rb
Run Code Online (Sandbox Code Playgroud)

然后我可以运行一个带有任意参数的shell函数并运行快速ruby -Itest单一测试,或者rake如果有多个文件则执行任务.

ruby ruby-on-rails testunit

17
推荐指数
2
解决办法
6933
查看次数

设置工厂女孩与测试::单位和应该

我正在尝试在Ruby on Rails中使用Test :: Unit和Shoulda设置Factory Girl.我已经安装了gem,在test/factories目录下创建了我的工厂文件,并在test/models目录下创建了我的spec文件.我得到的当前错误是'ArgumentError:No such factory:test',这让我相信test_factory.rb文件没有被加载?知道我应该改变什么?

这是我的文件.

#test/factories/test_factory.rb
Factory.define :test do |t|  
  t.name 'test_spotlight'  
  t.label 'test spotlight label'  
end
Run Code Online (Sandbox Code Playgroud)

#test/modes/test_spec.rb
require 'test_helper'
require 'factory_girl'
class TestTest < Test::Unit::TestCase
  def setup
    @test = Factory.build(:test)
  end

  context "A test" do
    should "save with the minimum requirements" do
      assert @test.save
    end
  end 
end 
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails shoulda testunit factory-bot

16
推荐指数
1
解决办法
1万
查看次数

如何使用lib minitest或Test:Unit对单元测试进行着色?

我希望在我的开发环境中有单元测试输出颜色.但是,我无法在Linux(Debian和Ubuntu)上运行它.当我包含以下库时:

require 'minitest/autorun'
require 'minitest/unit'
require 'minitest/pride'
Run Code Online (Sandbox Code Playgroud)

我明白了:

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/minitest-2.3.1/lib/minitest/pride.rb:35:in `<top (required)>': undefined method `output' for MiniTest::Unit:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

由代码引起:

MiniTest::Unit.output = PrideIO.new(MiniTest::Unit.output)
Run Code Online (Sandbox Code Playgroud)

我见过一个有效的Rspec变种.不幸的是,我的Ruby知识还不足以看出差异.

ruby testunit minitest

14
推荐指数
3
解决办法
1万
查看次数

组织Ruby测试文件夹结构的最佳实践是什么?

在Java中,通常您将创建两个源文件夹srctest具有相同的包层次结构.

在Ruby中,您是否只将所有测试放在与测试类相同的文件夹中?或者您是否在单独的文件夹中创建类似的层次结构?如果是这样,您如何管理require单元测试中的路径?

ruby unit-testing rspec code-organization testunit

13
推荐指数
1
解决办法
3946
查看次数

如何从Test :: Unit :: TestCase获取堆栈跟踪

我正在测试一些Ruby代码并且有一个失败的Test :: Unit :: TestCase.不幸的是,失败报告只给出了最大的错误,而不是完整的堆栈跟踪.具体来说,它说:

 1) Failure:
test_tp_make(TestScripts::TestTpMake) [test/test_scripts.rb:73]:
Exception raised:
<#<NoMethodError: undefined method `[]' for nil:NilClass>>.
Run Code Online (Sandbox Code Playgroud)

引用的行号(73)是我测试用例中assert_nothing_raised代码块的开始,后者又启动另一个代码块,后者又调用大型库.

我尝试使用--verbose标志运行测试,遗憾的是这不会更改异常输出.我试着咨询了测试::单位的文件,但它似乎不枚举可用选项(例如,没有什么有用的在这里).搜索Web和StackOverflow表明了如何在Rails中启用堆栈跟踪的一些答案,但这是非Rails ruby​​代码.

我可以从测试中提取失败的代码并在Test :: Unit之外运行它,使我能够看到所有的输出.但是每次测试失败都会很痛苦.

有谁知道如何让Test :: Unit给我一个完整的堆栈跟踪?

ruby testunit

13
推荐指数
1
解决办法
2698
查看次数

如何输出ruby单元测试的名称

我有一个单元测试(例子是修改Test :: Unit文档)

require 'test/unit'

class TC_MyTest < Test::Unit::TestCase
  def test_something
    assert(true)
  end
end
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我得到:

Loaded suite C:/test
Started
.
Finished in 0.0 seconds.

1 tests, 1 assertions, 0 failures, 0 errors
Run Code Online (Sandbox Code Playgroud)

我想得到这样的东西(test_something输出):

Loaded suite C:/test
Started
test_something
.
Finished in 0.0 seconds.

1 tests, 1 assertions, 0 failures, 0 errors
Run Code Online (Sandbox Code Playgroud)

ruby unit-testing testunit

12
推荐指数
2
解决办法
4789
查看次数

在ruby中,你可以在irb中执行assert_equal和其他断言吗?

你能从irb中执行assert_equal吗?这不起作用.

require 'test/unit'
assert_equal(5,5)
Run Code Online (Sandbox Code Playgroud)

ruby testunit

12
推荐指数
3
解决办法
1万
查看次数

Mocha:具有特定参数的存根方法,但不包含其他参数

我想在给定特定参数值时使用Mocha存根方法,并在给出任何其他值时调用原始方法.

当我这样做时:

MyClass.any_instance.stubs(:show?).with(:wanne_show).returns(true)
Run Code Online (Sandbox Code Playgroud)

我得到了

unexpected invocation for MyClass.show?(:other_value)
Run Code Online (Sandbox Code Playgroud)

我也知道,在没有'with'调用的情况下编写模拟时我可以存根所有参数,然后给出我特定的模拟.但是我必须知道每次通话的返回值,但事实并非如此:/

tldr; 有没有办法在存根中调用原始方法或只存储特定参数并留下其他参数?

ruby-on-rails mocha.js testunit

11
推荐指数
1
解决办法
3126
查看次数

是否仍然可以在导轨4中使用测试单元?

从Rails 3.2升级到Rails 4后,我的应用程序正常运行,但我的测试用测试单元编写,是一场灾难.

据传Minitest与测试单元"兼容".但是,如果我尝试使用(现在捆绑的)Minitest,那么存在一系列差异 - 从assert*语句名称和参数到(很明显)许多其他东西既大又微妙.

如果我试图避免使用Minitest并尝试将我的测试单元gem保留在我的Gemfile中,则rake测试会爆炸,说,

undefined method 'refute_predicate' for class 'ActiveSupport::TestCase'
Run Code Online (Sandbox Code Playgroud)

这是因为已经打电话

require 'rails/test_help'
Run Code Online (Sandbox Code Playgroud)

:(

我一直在寻找,但还没有想出任何继续使用测试单元的方法.唯一的替代方案似乎是(对我们来说,大规模)重构我们的测试代码,因为我们80%的测试都会以某种方式破坏,或者Minitest与测试单元的不兼容性.

然而阅读http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3- 2-to-rails-4-0我发现实质上没有提到这一点 - 我觉得必须遗漏一些东西.

是否有可能使Minitest更系统地与测试单元兼容?或者继续在Rails 4中使用测试单元?

ruby ruby-on-rails testunit minitest ruby-on-rails-4

10
推荐指数
1
解决办法
2218
查看次数