テストには Riot (https://github.com/thumblemonks/riot) を使用していますが、他のものを使用することもできます。
次のようなテスト出力が得られます。
Running a test
+ something works
+ something else works
- something failed
プログラムでこの情報にアクセスしたいと考えています。何かのようなもの:
test = TestClass.load("my_test_file.rb")
result = test.run
result.errors # some array
私自身の質問に答えます。興味がある人がいたら、より詳細な回答を投稿できます。
その要点は、テスト ファイルを評価し、評価されたテストからコンテキストを取得することです。
Riot.alone! # so Riot doesn't automatically run the tests
["/path/to/test/file"].each do |test_file|
eval(IO.read(path), binding, test_file) # load test file
Riot.root_contexts.each do |context|
reporter = MyReporter.new
context.run reporter
# do something cool with reporter results
end
Riot.root_contexts.clear # clean out root_contexts so it's clean for the next run
end
ここで、MyReporter は合否テスト結果を処理する実装です。 https://github.com/thumblemonks/riot/blob/master/lib/riot/reporter.rb を参照してください。