¿Cómo generar un archivo con los nombres de los métodos en clase?

Tengo este archivo de prueba de unidad:

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 

Necesito escribir una secuencia de comandos ruby ​​que escriba los nombres de las pruebas en el archivo .txt. Algo como

preparar
test_achievements_iknow_report_page
test_achievements_daily_report_page
test_client_side_report_page

Gracias de antemano por las sugerencias.

Podría usar un script simple que use expresiones regulares para imprimir las líneas que coincidan con 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 

Luego ponga el resultado del script en un archivo .txt

 ruby match_test_methods.rb > test_methods.txt 

Una forma más robusta que la otra respuesta:

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

Esto usará realmente el tiempo de ejecución de Ruby y no estará sujeto a una coincidencia accidental con la def en lugares donde no esté definiendo un método (como dentro de una cadena), no coincidirá con otras clases en el archivo y leerá correctamente la jerarquía de herencia .