Contenu connexe Similaire à The ruby way test (20) The ruby way test1. The Ruby Way (Test) Meet a Test world [email_address] 4. Ruby 中 测试框架 1.Ruby 是一个非常注重测试的语言,提供了一套测试框架,以进行单元测试和集成测试,名称为 RUBY 单元测试框架: ( Ruby Unit Testing Framework) ,保存与 Ruby 的 Runt 目录,包括 TestSuite , TestCace , tests , 和 Assertions 4 个部分 . 5. 测试框架 1. 通过加载一行代码 require ‘test/unit’. 就给 Ruby 脚本加上了编写测试用例的能力。 一个简单的’ Hello world’ 测试例程( TestCase ): #hello_test require ’test/unit’ class TC_HelloTest<Test::Unit::TestCase def test_hello puts “test_hello” assert true end end 测试的结果如下: Loaded suite testhello started test_hello 6. Finished in 0.0 seconds. 1 tests,1assertions,0 failures, 0 errors 上面的输出结果: 1 tests,1assertions,0 failures, 0 errors 代表测试组合的测试已经成功执行,它有一个测试,一个断言,耗费了 0.0 秒, 0 failures, 0 errors 没有一个错误。下面是对代码的解释: 1.require ‘test/unit’ 在编写单元测试的时候,应该始终包含 require ‘test/unit’ ,它包含了可以编 写和运行单元测试的类和功能,提供对测试组合的操作。 2 . class TC_HelloTest<Test::Unit::TestCase 必须有一个 Test::Unit::TestCase 的 派生类 , TestCase 类是测试例程的宿主 3 . def test_hello 测试执行的函数,输出 “ test_hello” ,所有的测试方法必须遵循如下命名规范:名称必须以 test 开头,测试框架将不认为它是测试方法,也不会自动运行,他是一个普通 Ruby 方法。 4. assert true 断言是测试方法 8. 1.Test Suite( 测试组合 ) :一个测试组合是一大堆测试用例的集合,运行了一个测试组合以后,它将执行该测试组合中的每一个属于它的测试,例如,可以通过创建一个测试组合,来包含每一个测试单元,这有利于小组不断的进行进行编译和打包集成,有利于提高测试速度和测试的质量,上面的 testhello.rb 就是一个测试组合。 2.TestCase (测试例程): 测试例程是一个继承与 Test::Unit::TestCase 的类,包含了以 test 开头命名的测试方法,以及和内容相关的测试策略。 3. tests (测试)方法 :包含了断言和测试操作的方法,以 test 开头,表示某一特定的测试场景。 4.assertion( 断言 ) :用来判断一个对象(或表达式)是否是希望的结果。 9. 测试流程 一个简单的测试框架: 在下面测试代码中, UserVerify 用于表示用户校验模块,测试一个用户密码是否符合客户制定的安全规则, UserVerify 中的 is_pass_format_ok? 方法将处理这个问题,如果用户的密码通过了测试规则,将返回 TRUE, 否则,将返回 FASLE 并且断言立即中止,不再执行。 测试代码: class UserVerity attr_accessor :username ,:password def initialize(username,password) @forbidwords =[‘123456’] @username =username @password =password end 10. def is_pass-format_ok? return false if @password.nil? return false if @password.empty? return false if @password.size < 6 return false if @ forbidwords? (@ password ) return false if @password =~/[]?/ return false if @password == @username true end end 11. 使用测试框架示例: require ‘test/unit’ class TC_UserTest < Test::Unit::TestCase def test_hello assert true end def test_passwords assert UserVerity.new(“root”,”abc”).is_pass_format_ok? assert UserVerity.new(“root”,”123456”).is_pass_format_ok? assert UserVerity.new(“root”,”1234567890”).is_pass_format_ok? assert UserVerity.new(“root”,”password”).is_pass_format_ok? assert UserVerity.new(“root”,”user”).is_pass_format_ok? assert UserVerity.new(“root”,”root”).is_pass_format_ok? assert UserVerity.new(“root”,”nil”).is_pass_format_ok? assert UserVerity.new(“root”,”1”).is_pass_format_ok? assert UserVerity.new(“root”,””).is_pass_format_ok? 12. 这段程序的输出结果如下所示: Loaded suite userpwd Started . F Finished in 0.016 seconds. …… . 测试用例错误的详细信息 注意 Started 下面的 . F (小圆点和 F ) . : 测试通过。 F :测试失败 。 E :发生错误。