diff --git a/lib/cmdtest/junitfile.rb b/lib/cmdtest/junitfile.rb index 0a2a0c3..1c78bb4 100644 --- a/lib/cmdtest/junitfile.rb +++ b/lib/cmdtest/junitfile.rb @@ -49,9 +49,10 @@ module Cmdtest class Testcase def write(f) - f.put ' ', [ + f.put ' ', [ @classname, @name, + @duration, ] end end @@ -60,7 +61,8 @@ module Cmdtest class OkTestcase < Testcase - def initialize(classname, name) + def initialize(duration, classname, name) + @duration = duration @classname = classname @name = name @message = @type = @text = nil @@ -72,7 +74,8 @@ module Cmdtest class ProblemTestcase < Testcase - def initialize(classname, name, message, type, text) + def initialize(duration, classname, name, message, type, text) + @duration = duration @classname = classname @name = name @message = message @@ -81,9 +84,10 @@ module Cmdtest end def write(f) - f.put ' ', [ + f.put ' ', [ @classname, @name, + @duration, ] f.put ' <%s message="%s" type="%s">%s', [ xml_tag, @@ -114,37 +118,41 @@ module Cmdtest class Testsuite + attr_accessor :duration + def initialize(package, name) @package = package @name = name @testcases = [] + @duration = 0.0 end - def ok_testcase(classname, name) - testcase = OkTestcase.new(classname, name) + def ok_testcase(duration, classname, name) + testcase = OkTestcase.new(duration, classname, name) @testcases << testcase testcase end - def err_testcase(classname, name, message, type, text) - testcase = ErrTestcase.new(classname, name, message, type, text) + def err_testcase(duration, classname, name, message, type, text) + testcase = ErrTestcase.new(duration, classname, name, message, type, text) @testcases << testcase testcase end - def skip_testcase(classname, name, message, type, text) - testcase = SkipTestcase.new(classname, name, message, type, text) + def skip_testcase(duration, classname, name, message, type, text) + testcase = SkipTestcase.new(duration, classname, name, message, type, text) @testcases << testcase testcase end def write(f) - f.put ' ', [ + f.put ' ', [ 0, @testcases.grep(ErrTestcase).size, @testcases.grep(SkipTestcase).size, @name, @testcases.size, + @duration, @package, ] for testcase in @testcases @@ -184,13 +192,13 @@ end if $0 == __FILE__ jf = Cmdtest::JunitFile.new("jh.xml") ts = jf.new_testsuite("foo") - ts.ok_testcase("jh.Foo", "test_a") - ts.ok_testcase("jh.Foo", "test_b") + ts.ok_testcase(1.0, "jh.Foo", "test_a") + ts.ok_testcase(1.0, "jh.Foo", "test_b") - ts.err_testcase("jh.Foo", "test_c", "2 > 1", "assert", "111\n222\n333\n") + ts.err_testcase(1.0, "jh.Foo", "test_c", "2 > 1", "assert", "111\n222\n333\n") ts = jf.new_testsuite("bar") - ts.ok_testcase("jh.Bar", "test_x") + ts.ok_testcase(1.0, "jh.Bar", "test_x") jf.write end diff --git a/lib/cmdtest/junitlogger.rb b/lib/cmdtest/junitlogger.rb index bd9b6e3..49a8da8 100644 --- a/lib/cmdtest/junitlogger.rb +++ b/lib/cmdtest/junitlogger.rb @@ -35,28 +35,37 @@ module Cmdtest end def testclass_begin(testcase_class_name) + @testclass_t1 = Time.now @testcase_class_name = testcase_class_name @ts = @jf.new_testsuite("CMDTEST", testcase_class_name) end + def testclass_end(testcase_class_name) + @testclass_t2 = Time.now + @ts.duration = @testclass_t2 - @testclass_t1 + end + def testmethod_begin(method) @err_assertions = [] @err_skip = nil + @t1 = Time.now end def testmethod_end(method) + @t2 = Time.now + @duration = @t2 - @t1 if @err_skip != nil message = @err_skip.split(/\n/)[0] type = "skip" text = @err_skip - @ts.skip_testcase(_xml_class, method, message, type, text) + @ts.skip_testcase(@duration, _xml_class, method, message, type, text) elsif @err_assertions.size > 0 message = @err_assertions[0].split(/\n/)[0] type = "assert" text = @err_assertions.join - @ts.err_testcase(_xml_class, method, message, type, text) + @ts.err_testcase(@duration, _xml_class, method, message, type, text) else - @ts.ok_testcase(_xml_class, method) + @ts.ok_testcase(@duration, _xml_class, method) end end