add 'time=n.nnn' attribute in JUnit output
This commit is contained in:
parent
93519ab612
commit
5c84e04a51
@ -49,9 +49,10 @@ module Cmdtest
|
|||||||
|
|
||||||
class Testcase
|
class Testcase
|
||||||
def write(f)
|
def write(f)
|
||||||
f.put ' <testcase classname="%s" name="%s"/>', [
|
f.put ' <testcase classname="%s" name="%s" time="%.3f"/>', [
|
||||||
@classname,
|
@classname,
|
||||||
@name,
|
@name,
|
||||||
|
@duration,
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -60,7 +61,8 @@ module Cmdtest
|
|||||||
|
|
||||||
class OkTestcase < Testcase
|
class OkTestcase < Testcase
|
||||||
|
|
||||||
def initialize(classname, name)
|
def initialize(duration, classname, name)
|
||||||
|
@duration = duration
|
||||||
@classname = classname
|
@classname = classname
|
||||||
@name = name
|
@name = name
|
||||||
@message = @type = @text = nil
|
@message = @type = @text = nil
|
||||||
@ -72,7 +74,8 @@ module Cmdtest
|
|||||||
|
|
||||||
class ProblemTestcase < Testcase
|
class ProblemTestcase < Testcase
|
||||||
|
|
||||||
def initialize(classname, name, message, type, text)
|
def initialize(duration, classname, name, message, type, text)
|
||||||
|
@duration = duration
|
||||||
@classname = classname
|
@classname = classname
|
||||||
@name = name
|
@name = name
|
||||||
@message = message
|
@message = message
|
||||||
@ -81,9 +84,10 @@ module Cmdtest
|
|||||||
end
|
end
|
||||||
|
|
||||||
def write(f)
|
def write(f)
|
||||||
f.put ' <testcase classname="%s" name="%s">', [
|
f.put ' <testcase classname="%s" name="%s" time="%.3f">', [
|
||||||
@classname,
|
@classname,
|
||||||
@name,
|
@name,
|
||||||
|
@duration,
|
||||||
]
|
]
|
||||||
f.put ' <%s message="%s" type="%s">%s</%s>', [
|
f.put ' <%s message="%s" type="%s">%s</%s>', [
|
||||||
xml_tag,
|
xml_tag,
|
||||||
@ -114,37 +118,41 @@ module Cmdtest
|
|||||||
|
|
||||||
class Testsuite
|
class Testsuite
|
||||||
|
|
||||||
|
attr_accessor :duration
|
||||||
|
|
||||||
def initialize(package, name)
|
def initialize(package, name)
|
||||||
@package = package
|
@package = package
|
||||||
@name = name
|
@name = name
|
||||||
@testcases = []
|
@testcases = []
|
||||||
|
@duration = 0.0
|
||||||
end
|
end
|
||||||
|
|
||||||
def ok_testcase(classname, name)
|
def ok_testcase(duration, classname, name)
|
||||||
testcase = OkTestcase.new(classname, name)
|
testcase = OkTestcase.new(duration, classname, name)
|
||||||
@testcases << testcase
|
@testcases << testcase
|
||||||
testcase
|
testcase
|
||||||
end
|
end
|
||||||
|
|
||||||
def err_testcase(classname, name, message, type, text)
|
def err_testcase(duration, classname, name, message, type, text)
|
||||||
testcase = ErrTestcase.new(classname, name, message, type, text)
|
testcase = ErrTestcase.new(duration, classname, name, message, type, text)
|
||||||
@testcases << testcase
|
@testcases << testcase
|
||||||
testcase
|
testcase
|
||||||
end
|
end
|
||||||
|
|
||||||
def skip_testcase(classname, name, message, type, text)
|
def skip_testcase(duration, classname, name, message, type, text)
|
||||||
testcase = SkipTestcase.new(classname, name, message, type, text)
|
testcase = SkipTestcase.new(duration, classname, name, message, type, text)
|
||||||
@testcases << testcase
|
@testcases << testcase
|
||||||
testcase
|
testcase
|
||||||
end
|
end
|
||||||
|
|
||||||
def write(f)
|
def write(f)
|
||||||
f.put ' <testsuite errors="%d" failures="%d" skipped="%d" name="%s" tests="%d" package="%s">', [
|
f.put ' <testsuite errors="%d" failures="%d" skipped="%d" name="%s" tests="%d" time="%.3f" package="%s">', [
|
||||||
0,
|
0,
|
||||||
@testcases.grep(ErrTestcase).size,
|
@testcases.grep(ErrTestcase).size,
|
||||||
@testcases.grep(SkipTestcase).size,
|
@testcases.grep(SkipTestcase).size,
|
||||||
@name,
|
@name,
|
||||||
@testcases.size,
|
@testcases.size,
|
||||||
|
@duration,
|
||||||
@package,
|
@package,
|
||||||
]
|
]
|
||||||
for testcase in @testcases
|
for testcase in @testcases
|
||||||
@ -184,13 +192,13 @@ end
|
|||||||
if $0 == __FILE__
|
if $0 == __FILE__
|
||||||
jf = Cmdtest::JunitFile.new("jh.xml")
|
jf = Cmdtest::JunitFile.new("jh.xml")
|
||||||
ts = jf.new_testsuite("foo")
|
ts = jf.new_testsuite("foo")
|
||||||
ts.ok_testcase("jh.Foo", "test_a")
|
ts.ok_testcase(1.0, "jh.Foo", "test_a")
|
||||||
ts.ok_testcase("jh.Foo", "test_b")
|
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 = jf.new_testsuite("bar")
|
||||||
ts.ok_testcase("jh.Bar", "test_x")
|
ts.ok_testcase(1.0, "jh.Bar", "test_x")
|
||||||
|
|
||||||
jf.write
|
jf.write
|
||||||
end
|
end
|
||||||
|
@ -35,28 +35,37 @@ module Cmdtest
|
|||||||
end
|
end
|
||||||
|
|
||||||
def testclass_begin(testcase_class_name)
|
def testclass_begin(testcase_class_name)
|
||||||
|
@testclass_t1 = Time.now
|
||||||
@testcase_class_name = testcase_class_name
|
@testcase_class_name = testcase_class_name
|
||||||
@ts = @jf.new_testsuite("CMDTEST", testcase_class_name)
|
@ts = @jf.new_testsuite("CMDTEST", testcase_class_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def testclass_end(testcase_class_name)
|
||||||
|
@testclass_t2 = Time.now
|
||||||
|
@ts.duration = @testclass_t2 - @testclass_t1
|
||||||
|
end
|
||||||
|
|
||||||
def testmethod_begin(method)
|
def testmethod_begin(method)
|
||||||
@err_assertions = []
|
@err_assertions = []
|
||||||
@err_skip = nil
|
@err_skip = nil
|
||||||
|
@t1 = Time.now
|
||||||
end
|
end
|
||||||
|
|
||||||
def testmethod_end(method)
|
def testmethod_end(method)
|
||||||
|
@t2 = Time.now
|
||||||
|
@duration = @t2 - @t1
|
||||||
if @err_skip != nil
|
if @err_skip != nil
|
||||||
message = @err_skip.split(/\n/)[0]
|
message = @err_skip.split(/\n/)[0]
|
||||||
type = "skip"
|
type = "skip"
|
||||||
text = @err_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
|
elsif @err_assertions.size > 0
|
||||||
message = @err_assertions[0].split(/\n/)[0]
|
message = @err_assertions[0].split(/\n/)[0]
|
||||||
type = "assert"
|
type = "assert"
|
||||||
text = @err_assertions.join
|
text = @err_assertions.join
|
||||||
@ts.err_testcase(_xml_class, method, message, type, text)
|
@ts.err_testcase(@duration, _xml_class, method, message, type, text)
|
||||||
else
|
else
|
||||||
@ts.ok_testcase(_xml_class, method)
|
@ts.ok_testcase(@duration, _xml_class, method)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user