Ruby中单元测试(Unit Test)方法
作者:网络转载 发布时间:[ 2012/12/20 11:39:36 ] 推荐标签:
还有一点,我们都知道JUnit提供了TestSuite这个类,可以将很多TestCase汇总到一块执行,这个对于持续集成非常有用,因为持续集成需要执行所有的TestCase并输入报告。
要在Ruby中执行TestSuite不是那么简单,因为Ruby内置的库里面没有包含TestSuite,需要额外安装一个第三方的gem(test-unit):
sudo gem install test-unit
安装好了之后,可以使用TestSuite了:
require 'test/unit/testsuite'
require 'test/unit/ui/console/testrunner'
require_relative './service/pmu_dao/test_dao'
require_relative './service/pmu_dao/test_db_conn_pool'
require_relative './service/pmu_communication/test_comm8n'
require_relative './service/pmu_service/test_user_service'
require_relative './service/pmu_interface/test_interface'
class PMUTestSuite
def self.suite
suite = Test::Unit::TestSuite.new
suite << TestDBConnPool.suite
suite << TestDAOManager.suite
suite << TestMessageDispatcher.suite
suite << TestMessage.suite
suite << TestUserService.suite
suite << TestInterface.suite
return suite
end
end
Test::Unit::UI::Console::TestRunner.run(PMUTestSuite)
我们把每个TestCase都返回一个suite对象:suite << TestInterface.suite,然后增加到suite中,并使用TestRunner执行。
我们要注意的是,mini test中的TestCase类是没有suite方法的(TestInterface.suite),suite方法是通过require 'test/unit/testsuite'之后,'test/unit/testsuite' 使用了ruby中module 的 mixin特性,给TestCase类增加了suite方法。
后我们看运行结果:
Loaded suite Unnamed TestSuite
Started
..latin1
tbl_car_private_info
tbl_request
tbl_task
tbl_user_credit
tbl_user_info
tbl_user_login
tbl_user_private_info
………E
Error:
test_regist_all_handler(TestMessageDispatcher):
ArgumentError: wrong number of arguments (0 for 1)
/Users/maoxuepeng/uproject/utopia-project-code/main/source/server/service/pmu_communication/comm8n.rb:125:in `regist_all_handlers’
/Users/maoxuepeng/uproject/utopia-project-code/main/test/service/pmu_communication/test_comm8n.rb:33:in `test_regist_all_handler’
.F
Failure:
test_regist_handler_duplicate(TestMessageDispatcher) [/Users/maoxuepeng/uproject/utopia-project-code/main/test/service/pmu_communication/test_comm8n.rb:47]:
<false> is not true.
…………
Finished in 0.231342 seconds.
26 tests, 25 assertions, 1 failures, 1 errors, 0 pendings, 0 omissions, 0 notifications
92.3077% passed
注意结果中有两个用例,一个是错误一个执行失败。
当然,TestSuite的执行结果是可以美化的,但是还没有研究,有兴趣的同学可以研究后交流一下。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11