class JUnitFormatter
def dump_summary(duration, example_count, failure_count, pending_count)
def dump_summary(duration, example_count, failure_count, pending_count) super(duration, example_count, failure_count, pending_count) output.puts("<?xml version=\"1.0\" encoding=\"utf-8\" ?>") output.puts("<testsuite errors=\"0\" failures=\"#{failure_count+pending_count}\" tests=\"#{example_count}\" time=\"#{duration}\" timestamp=\"#{Time.now.iso8601}\">") output.puts(" <properties />") @test_results[:successes].each do |t| md = t.metadata runtime = md[:execution_result][:run_time] output.puts(" <testcase classname=\"#{md[:file_path]}\" name=\"#{md[:full_description]}\" time=\"#{runtime}\" />") end @test_results[:failures].each do |t| md = t.metadata runtime = md[:execution_result][:run_time] output.puts(" <testcase classname=\"#{md[:file_path]}\" name=\"#{md[:full_description]}\" time=\"#{runtime}\">") output.puts(" <failure message=\"failure\" type=\"failure\">") output.puts("<![CDATA[ #{read_failure(t)} ]]>") output.puts(" </failure>") output.puts(" </testcase>") end output.puts("</testsuite>") end
def example_failed(example)
def example_failed(example) super(example) @test_results[:failures].push(example) end
def example_passed(example)
def example_passed(example) super(example) @test_results[:successes].push(example) end
def example_pending(example)
def example_pending(example) self.example_failed(example) end
def initialize(output)
def initialize(output) super(output) @test_results = { :failures => [], :successes => [] } end
def read_failure(t)
def read_failure(t) exception = t.metadata[:execution_result][:exception_encountered] || t.metadata[:execution_result][:exception] message = "" unless (exception.nil?) message = exception.message message += "\n" message += format_backtrace(exception.backtrace, t).join("\n") end return(message) end