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%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