如何使用类中的方法名称生成文件?

我有这个unit testing文件:

class WebsiteCheckPageElements < Test::Unit::TestCase def setup ... end def test_achievements_iknow_report_page ... end def test_achievements_daily_report_page ... end def test_client_side_report_page ... end end 

我需要编写一个ruby脚本,将测试的名称写入.txt文件。 就像是

建立
test_achievements_iknow_report_page
test_achievements_daily_report_page
test_client_side_report_page

提前感谢您的建议。

您可以使用一个使用正则表达式打印匹配def的行的简单脚本:

match_test_methods.rb

 File.open('your_unit_test_file.rb').each_line do |line| match = line.match(/def (.+)/) puts match[1] if match end 

然后将脚本的结果放在.txt文件中

 ruby match_test_methods.rb > test_methods.txt 

比其他答案更健壮的方式:

 File.open("test_methods.txt", "w") do |f| WebsiteCheckPageElements.instance_methods.each do |method| f << "#{method}\n" end end 

这实际上将使用Ruby运行时,并且不会在未定义方法的地方(例如在String内)意外匹配def ,它将不匹配文件中的其他类,并且它将正确读取inheritance层次结构。