With ruby or macruby testunit or minitest, results are damnly tied to output and you can’t get result of a test as an object after its execution and global tests result as an object too.
This gem permit to do so, and, have result of a unit test as an TestResult object on which you can call methods #success? #failures #errors #skips #current … You can be yielded this TestResult object after each test and the global TestResult after all tests.
Note : For now it just work with macruby interpreter and minitest or testunit tests. It is really easy to evolve it for ruby interpreter. It will be done soon.
<img src=“https://codeclimate.com/badge.png” />
gem install minitest_owrapper
Suppose :
-
@test_file is the absolute path to your test file.
-
load_path is the load path needed for your path (-I option)
Just do :
result = MinitestOwrapper.run(@test_file, load_path) do |test_result| #test_result.current => Object of type Error, Failure, Skip, Success #test_result.current.message => Error message , backtrace #test_result.current.klass => Test Class #test_result.current.method => Test method #test_result.current.line => Line number of end
And, you will get a test_result after each test, ie an object of class Failure, Error, Skip or Success.
These objects respond to methods :klass, :method, :line, :message .
The final result will respond to :errors => array of errors :failures => array of failures :skips => array of skips :successes => array of success :tests => number of tests :duration => duration of the tests :assertions => number of assertions
Example of usage in the test file test/test_minitest_owrapper.rb
it 'should run FakeTest and get TestResult object whith 2 failure, 1 error, 1 success, 1 skip ' do load_path = File.expand_path(File.join(File.dirname(__FILE__), '../fixtures')) result = MinitestOwrapper.run(@test_file, load_path) do |test_result| puts test_result.current end assert_equal 1, result.errors.count assert_equal 2, result.failures.count assert_equal 1, result.skips.count assert_equal 1, result.successes.count assert_equal 5, result.tests assert_in_delta result.duration, 1, 1 assert_equal 4, result.assertions end
minitest
Adapt to work with ruby interpreter.
MIT Licence