开发者社区> shapherd> 正文

一分钟了解ruby中的单测

简介:
+关注继续查看

之前用gtest写过很多c++的单测case, 对gtest的强大和灵活印象深刻;最近需要用ruby写一个小工具, 接触了下ruby, 写了代码就要写单测啊(好的单测确实对代码的健壮性和正确性保证上太重要了)

简单搜了下发现 单测是ruby的一部分, 而不像c++等要引用gtest等三方库,简单可依赖,  简单写个例子

代码:


module Brtest
    class Myfile
       def write(theFile,theCont)
            _fileName=File.dirname(__FILE__)+"/tmp/"+theFile
            Dir.mkdir(File.dirname(_fileName)) unless File.exist?(File.dirname(_fileName))
            aFile = File.new(_fileName,"w")
            aFile.puts theCont
            aFile.close
       end
    end 
end

对应单测, 放在test目录下:


require "test/unit"
require File.dirname(__FILE__)+"/../file"
include Brtest

require "Watir-webdriver"
include Watir

class TestFile < Test::Unit::TestCase
   def test_write
      _file = Myfile.new
      _file.write("test_file","testcontent")
   end
   def test_write_html
      br = Watir::Browser.new :ie
      br.goto "baidu.com"
      _file = Myfile.new
      _file.write("test_file_html",br.html)
      br.close
   end
      
end 

运行结果:

这个单测其实还有个问题, 没有清理单测生成的文件; 正确的做法应该是生成了测试文件, case中检查文件的内容是否符合预期, 如果符合 就删掉, 不符合则失败。  我觉得实际使用中可以灵活处理, 比如我的目的就是验证我的代码是可用的, 而不是把case作为每次回归来使用的, 可以不严格按照要求。

另外附上常用的断言(参数msg表示测试失败时显示的消息):

assert(boolean, [msg])
assert_equal (expected, actual, [msg])
assert_not_equal (expected, actual, [msg])
assert_match (pattern, string, [msg])
assert_no_match (pattern, string, [msg])
assert_nil (object, [msg])
assert_not_nil (object, [msg])
assert_instance_of (class, object, [])
assert_kind_of (class, object, [])
assert_ralse (Exception, …) {block}
assert_nothing_ralsed (Exception, …) {block}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
别梦依稀咒逝川,Ruby二十八年前|M1芯片Mac os系统配置Ruby(3.0.0) on Rails(6.1.1)开发环境
在每个开发者心里,都会有一门“最好”的语言,在这个世界的某个深处,在一些矫矫不群的人们心中,这门语言的名字叫做Ruby,它今年二十八岁了,历史和Java一样的悠久,但是它没有大厂背书、它的性能被开发者诟病、时至今日依然无法高效利用多核资源,甚至于它每年都要被“死亡”一次,相比于有太阳计算机系统、甲骨文、IBM 这些大公司支持的 Java,它是那么的一无所有,但是,它又拥有全世界最虔诚的“信徒”,拥有最活跃的开发者社区,这一切,又让它是那么的应有尽有。是的,这就是Rubyist的理念:有的时候,你想证明给一万个人看,到后来,你发现只得到了一个明白的人,那就够了。
59 0
基于Docker在Win10平台搭建Ruby on Rails 6.0框架开发环境
2023年,“非著名Web框架”--Ruby on Rails已经18岁了。在今年,Rails 6.0趋于完善,除了拿掉讨厌的Jquery,Webpacker 也成为默认前端打包方案,Sprockets 开始软着陆,未来很可能会和Jquery一样被彻底废弃,这就是历史的进程。
37 0
CVE-2018-3760 Ruby On Rails 路径穿越漏洞
CVE-2018-3760 Ruby On Rails 路径穿越漏洞
48 0
CVE-2019-5418 Ruby on Rails 路径穿越与任意文件读取漏洞
CVE-2019-5418 Ruby on Rails 路径穿越与任意文件读取漏洞
47 0
【Ruby on Rails全栈课程】5.5 项目上线--nginx+unicorn部署项目、域名映射
1、域名映射准备材料 云服务器以及域名(参考5.1 购买服务器、域名) nginx unicorn 2、安装以及设置nginx
165 0
【Ruby on Rails全栈课程】5.4 项目上线--项目初始化
1、数据库初始化 (1)登录数据库,创建名为data_system的database
62 0
【Ruby on Rails全栈课程】5.3 项目上线--git部署项目
1、git分布式版本控制系统是什么? 现在本地电脑1有一套data_system的代码,如果想把这套代码放到云服务器上,应该怎么做呢? 最简单的做法是直接将本地电脑1上的代码拷贝到服务器上。 但是我们拷贝完成后发现了一个bug1,在本地电脑1的代码中修复了之后。需要与云服务器上的代码同步,还是要将本地电脑1的代码拷贝到服务器上吗? 团队的另一个人修改了bug2,没有修改bug1,他如果将自己本地电脑2的代码拷贝到服务器上,就会将你刚刚修改的bug1代码覆盖掉。 所以我们现在需要一个第三方先将代码处理整合一下,将我们自己的代码与团队其他人的代码整合起来,再通过git pull操作将整合后
73 0
【Ruby on Rails全栈课程】5.1 项目上线--购买服务器、域名
项目完成后,如果希望别人能通过域名访问到我们的项目,那就要将项目上线,需要准备两个工具: 云服务器 已备案的域名
75 0
【Ruby on Rails全栈课程】4.7 评论功能实现(六)--其他回复展开
、描述 每条评论下面的回复条数最多显示两条,多于两条,回复下面会显示「更多n条回复 ↓」链接,每次点击此链接,展开8条回复,页面不刷新,需要配合ajax和js实现。 2、实现功能 (1)在routes.rb文件中添加路径,加上两个参数,:comment_id为回复所属的评论的id,point为此次点击为第几次点击
90 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
前端自动化测试
立即下载
《Java开发手册》2019最新版发布!
立即下载
阿里开发者手册-单元测试专题
立即下载