您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 >
跨越边界: 在集成框架中进行测试--在 Ruby on Rails 中进行单元测试
作者:网络转载 发布时间:[ 2013/2/27 15:39:39 ] 推荐标签:

再次注意,Rails 已经为您创建了测试用例。框架不仅为这个简单的小程序生成了视图和控制器,而且还生成了有助于测试用户界面的功能性测试。

对 Rails 应用程序进行单元测试

现在是运行一些测试的时候了。请看第一个测试,它已经在 test/unit/trail_test.rb 中写好了:

清单 8. 第一个测试


require File.dirname(__FILE__) + '/../test_helper'

class TrailTest < Test::Unit::TestCase
   fixtures :trails

   # Replace this with your real tests.
   def test_truth
      assert true
   end
end


确实,这个测试用例算不了什么,但您可以从中看出如何构架测试代码,而且自己的测试用例的模板也已经位。请运行测试,如清单 9 所示(包括结果):

清单 9. 运行第一个测试


> ruby test/unit/trail_test.rb
    Loaded suite test/unit/trail_test
    Started
    EE
    Finished in 0.027314 seconds.

      1) Error:
    test_truth(TrailTest):
    ActiveRecord::StatementInvalid: Mysql::Error: #42S02Table
      'trails_test.trails' doesn't exist: DELETE FROM trails

...results deleted...


测试用例失败,但是请看输出。第一行执行测试。第三行 EE 显示测试的结果。如果测试用例通过,会得到 “.” 字符。如果测试用例产生错误,会看到 E。如果某个断言不是 true,那么将看到 F。接下来,可以看到所请求的全部测试都将完成,以及完成这些测试需要的时间。后,将看到每个失败的详细原因。在这个示例中没有表,这是有一定原因的,因为在测试数据库中还没有创建任何表。通过将开发方案复制到测试环境,再重新运行测试,可以修复错误,如清单 10 所示:

清单 10. 复制方案,重新运行测试


> rake clone_schema_to_test          (in /Users/batate/rails/trails)
> ruby test/unit/trail_test.rb
    Loaded suite test/unit/trail_test
    Started
    .
    Finished in 0.038578 seconds.

    1 tests, 1 assertions, 0 failures, 0 errors


这样更好。但是测试还是太简单,所以是构建一个真正的测试用例的时候了。请添加下面这个新测试用例 test_truth,如清单 11 所示:

清单 11. 添加测试用例


    def test_truth
      assert true
    end

    def test_new
      trails = Trail.find_all
      Trail.new do |trail|
        trail.name = "Barton Creek"
        trail.description = "A little water in the Spring. You'll get wet."
        trail.difficulty = "medium"
        trail.save
      end
      bc = Trail.find_by_name("Barton Creek")
      assert_equal "medium", bc.difficulty
      assert_equal trails.size + 1, Trail.find_all.size

    end


这个代码惊人的紧凑。只需要键入上述代码以及两个断言,可以操纵持久模型。这种经济的投入正是脚本语言在其他环境中如此流行的原因。测试也是需要经济投入的地方。

现在可以运行测试用例,您将看到两个新断言显示在测试报告中。使用 Ruby 时,只需保存并编译测试即可。清单 12 显示了测试运行的结果:

清单 12. 测试结果


> ruby test/unit/trail_test.rb
    Loaded suite test/unit/trail_test
    Started
    .
    Finished in 0.038578 seconds.

    1 tests, 1 assertions, 0 failures, 0 errors
    bruce-tates-computer:~/rails/trails batate$ ruby test/unit/trail_test.rb
    Loaded suite test/unit/trail_test
    Started
    ..
    Finished in 0.182043 seconds.

    2 tests, 3 assertions, 0 failures, 0 errors


Fixture 和回滚
Java mock 对象

上一页1234下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd