※当サイトの記事には、広告・プロモーションが含まれます。

Rubyのプログラムのテストってどうすれば良いのか

www.itmedia.co.jp

 米Googleは9月26日(現地時間)、「Gemini 1.5 Pro」搭載のメモアプリ「NotebookLM」のソース(情報源)として、YouTubeのURLとオーディオファイル(MP3、WAVなど)を追加できるようにしたと発表した。

Googleの「NotebookML」、YouTube動画の概要生成も可能に - ITmedia NEWS

 NotebookLMは、ユーザーが選択したソースだけに基づいて、事実の要約、複雑なアイデアの説明、新しいつながりのブレインストーミングを行うことができる「仮想リサーチアシスタント」。日本でも日本語で利用できる。

Googleの「NotebookML」、YouTube動画の概要生成も可能に - ITmedia NEWS

⇧ 動画の分析とかもできるってことなんですかね?

物語の「換骨奪胎」が捗ることになったりするんですかね?

Rubyのプログラムをテストをするために必要な情報

まずは、Rubyのプログラムをテストするにあたり、必要な情報が分かりませんと。

ネットの情報を漁った感じでは、

qiita.com

www.clear-code.com

⇧ 上記サイト様によりますと、Rubyのプログラムに対するテスト用のライブラリの数がかなり多いのですが、ChatGPTに分類してもらったところ、

No ライブラリ 分類 Ruby バージョン 標準に含まれた時期 テスト種類
1 RubyUnit 外部 Ruby 1.0(2000年) なし 単体テスト
2 Lapidary 外部 Ruby 1.8(2004年) なし 単体テスト
3 test/unit 外部 Ruby 1.6(2001年) なし 単体テスト
4 標準 Ruby 1.8(2004年) Ruby 1.8Ruby 2.1(2004~2013年) 単体テスト
5 test-unit 外部 Ruby 1.9(2007年) なし 単体テスト
6 miniunit 外部 Ruby 1.9(2007年) なし 単体テスト
7 minitest 標準 Ruby 1.9.3(2011年) Ruby 1.9.3~現在(2011年~) 単体テスト
8 RSpec 外部 Ruby 1.8(2004年) なし 単体テスト結合テスト、エンドツーエンドテスト

⇧ 上記のような表になるっぽい。

www.geeksforgeeks.org

⇧ とりあえず、プロジェクトによって異なるらしいが、

  • Rubyの開発経験が浅い
    • Minitest
    • Test::Unit
  • Rubyの開発経験が豊富

というような選定になることが多いってことなんかね?

まぁ、Rubyを選んでアプリケーション開発している以上、「Rubyの開発経験が豊富」な層を期待しているような気がするので、「RSpec」が利用される感じになるんかね?

何か、テスト用のライブラリの機能的に差異がないのであれば、利用するライブラリは統一する感じにして欲しいですな...

Rubyのプログラムのテストってどうすれば良いのか

ネットの情報を漁った感じでは、

blog.jnito.com

qiita.com

blog.jnito.com

⇧ 上記サイト様によりますと、「RSpec」の利用者が多そうな感じということなんでしょうかね?

海外のWeb開発に関するサービスを提供している「Codica」という企業のブログ記事でも、

www.codica.com

⇧「RSpec」を取り上げてるっぽい。

Rubyのプログラムをテストするライブラリとしては、「RSpec」を導入していく感じで問題ないということでしょうかね?

RSpecを利用できるようにするには

というわけで、「RSpec」を利用できるようにしたいわけですが、

rspec.info

⇧ といった感じで、「RSpec」にはライブラリが複数あるのですが、「rspec-core」を導入すれば良いんですかね?

Ruby on Rails」といったフレームワークを利用して、Rubyアプリケーション開発しているのであれば、「rspec-rails」が同梱されてるっぽい。

GitHubで公開されている「rspec-core」のページの「REDEME」タブの内容には、

github.com

github.com

⇧ とあり、

gem install rspec      # for rspec-core, rspec-expectations, rspec-mocks
gem install rspec-core # for rspec-core only
rspec --help

⇧ 何やら、

  1. rspec
  2. rspec-core

の2つのGemをインストールする必要があるらしい。

公式のドキュメントのページで「rspec」については「RDoc」の選択肢に存在していないんだが?

とりあえず、何のGemをインストールすれば「RSpec」が導入できたことになるのかが分からんのだけど、

ts0818.hatenablog.com

⇧ 上記の記事の時に話の合った、

  • gem command

が利用できるようになっていないと、Gemはインストールできないので、「RSpec」を導入するにあたっての「prerequire(前提要件)」としては、

が事前にインストールされている必要がありますと。

Rubyのバージョンの指定とかは、「rspec-core」のページのREADMEに記載が無いところを見ると、どんなバージョンでも構わないってことになるのかもしれないのですが、

guides.rubygems.org

Ruby 1.9 以上のバージョンを利用するようにした方が良さそう。

Rubyのバージョンが1.9未満だと、gem commandを別途インストールする必要があることになりそうですし。

というわけで、一般的なRubyのプログラムのテストをする場合は、「RSpec」というRubyのプログラムをテストする用のライブラリを活用していく感じになりますと。

VS CodeVisual Studio Code)の拡張機能Ruby Test Explorer

VS CodeVisual Studio Code )」を利用している場合は、「Ruby Test Explorer」という拡張機能を導入する感じになるらしい。

ネットの情報を漁った感じでは、

www.takayasugiyama.com

⇧ .vscode/settings.jsonへ設定を追加する必要があるっぽい。

カバレッジを表示するには、「SimpleCov」をインストールする

Javaの開発でEclipseとか利用している場合は、カバレッジについての機能は同梱されているのだけど、Rubyの場合は、Gemをインストールする感じになるらしい。

github.com

⇧ 導入方法が載ってはいるのだけど、カバレッジ対象のファイルについては、自分で設定してあげる必要があり、「RSpec」を利用している場合は、

■spec/spec_helper.rb

require 'simplecov'
SimpleCov.start do
  # 一旦、フィルターをクリアーする
  filters.clear
  # /vendor配下はカバレッジ出力の対象外とする
  add_filter "/vendor/"
  # カバレッジの出力の対象にしたいRubyファイルが配置されているディレクトリを指定する
  track_files "[カバレッジを出力した対象のRubyファイルが配置されているディレクトリ]/*.rb"
end

⇧ のように、「spec/spec_helper.rb」の先頭に追記してあげる必要がある。

一応、

rubydoc.info

⇧ 公式のAPIドキュメントは存在するっぽい。

あとは、カバレッジを確認するには、「RSPec」のテスト実行が完了すると「SimpleCov」によって出力されるHTMLファイル(coverage/index.html)をレンダリングする必要があるのだけど、「VS CodeVisual Studio Code )」の拡張機能「Remote Development」などで開発している場合は、拡張機能「Live Preview」などをインストールしておいた方が良さそう。

Rubyは、開発環境を作るのが面倒ですな...

有償の「RubyMine」とか利用できるのであれば、面倒な開発環境構築に時間を取られずに済むのかもしれませんが...

毎度モヤモヤ感が半端ない…

今回はこのへんで。