class Test::Unit::UI::JUnitXml::TestRunner
Runs a Test::Unit::TestSuite and outputs JUnit XML format.
Public Class Methods
new(suite, options={})
click to toggle source
Calls superclass method
# File lib/test/unit/ui/junitxml/testrunner.rb, line 14 def initialize(suite, options={}) super @junit_test_suites = [] end
Private Instance Methods
attach_to_mediator()
click to toggle source
# File lib/test/unit/ui/junitxml/testrunner.rb, line 21 def attach_to_mediator @mediator.add_listener(TestSuite::STARTED_OBJECT, &method(:test_suite_started)) @mediator.add_listener(TestSuite::FINISHED_OBJECT, &method(:test_suite_finished)) @mediator.add_listener(TestCase::STARTED_OBJECT, &method(:test_started)) @mediator.add_listener(TestCase::FINISHED_OBJECT, &method(:test_finished)) @mediator.add_listener(TestResult::PASS_ASSERTION, &method(:result_pass_assertion)) @mediator.add_listener(TestResult::FAULT, &method(:result_fault)) @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished)) end
finished(elapsed_time)
click to toggle source
# File lib/test/unit/ui/junitxml/testrunner.rb, line 67 def finished(elapsed_time) # open ERB template template = File.read(File.expand_path("xml.erb", File.dirname(__FILE__))) if ERB.instance_method(:initialize).parameters.assoc(:key) erb = ERB.new(template, trim_mode: "%") else erb = ERB.new(template, nil, "%") end # output output = if @options[:junitxml_output_file] File.open(@options[:junitxml_output_file], "w") elsif @options[:output_file_descriptor] IO.new(@options[:output_file_descriptor], "w") elsif @options[:output] @options[:output] else STDOUT end output.write(erb.result(binding)) output.flush output.close if @options[:junitxml_output_file] end
result_fault(fault)
click to toggle source
# File lib/test/unit/ui/junitxml/testrunner.rb, line 63 def result_fault(fault) @junit_test_suites.last.test_cases.last << fault end
result_pass_assertion(result)
click to toggle source
# File lib/test/unit/ui/junitxml/testrunner.rb, line 59 def result_pass_assertion(result) @junit_test_suites.last.test_cases.last.assertion_count += 1 end
test_finished(test)
click to toggle source
# File lib/test/unit/ui/junitxml/testrunner.rb, line 55 def test_finished(test) @junit_test_suites.last.test_cases.last.time = test.elapsed_time end
test_started(test)
click to toggle source
# File lib/test/unit/ui/junitxml/testrunner.rb, line 50 def test_started(test) @junit_test_suites.last << JUnitTestCase.new(test.class.name, test.description) end
test_suite_finished(suite)
click to toggle source
# File lib/test/unit/ui/junitxml/testrunner.rb, line 44 def test_suite_finished(suite) if suite.test_case @junit_test_suites.last.time = suite.elapsed_time end end
test_suite_started(suite)
click to toggle source
# File lib/test/unit/ui/junitxml/testrunner.rb, line 38 def test_suite_started(suite) if suite.test_case @junit_test_suites << JUnitTestSuite.new(suite.name) end end