require 'minitest/autorun' require 'stringio' require 'time' require 'minitest/junit' class FakeTestName; end module FirstModule module SecondModule class TestClass; end end end class TestCaseFormatter < Minitest::Test def test_all_tests_generate_testcase_tag test = create_test_result reporter = create_reporter assert_match test.name, reporter.format(test).target! end def test_skipped_tests_generates_skipped_tag test = create_test_result test.failures << create_error(Minitest::Skip) reporter = create_reporter reporter.record test reporter.report assert_match(/\n<\/testcase>\n<\/testsuite>\n/, reporter.output) end def test_failing_tests_creates_failure_tag test = create_test_result test.failures << create_error(Minitest::Assertion) reporter = create_reporter reporter.record test reporter.report assert_match(/ e e end def create_test_result(name = FakeTestName) test = Class.new Minitest::Test do define_method 'class' do name end end.new 'test_method_name' test.time = a_number test.assertions = a_number Minitest::Result.from test end def a_number rand(100) end def create_reporter(options = {}) io = StringIO.new '' reporter = Minitest::Junit::Reporter.new io, options def reporter.output @io.string end reporter.start reporter end end