@@ -36,9 +36,9 @@ create or replace type body ut_xunit_reporter is
3636 l_lines ut_varchar2_list;
3737 begin
3838 self.print_text('<testcase classname="' || get_path(a_test.path, a_test.name) || '" ' || ' assertions="' ||
39- coalesce(cardinality(a_test.results), 0) || '"' || self.get_common_item_attributes(a_test) ||
40- case when a_test.result != ut_utils.tr_success then' status="'||ut_utils.test_result_to_char(a_test.result)||'"' end ||
41- '>');
39+ coalesce(cardinality(a_test.results), 0) || '"' || self.get_common_item_attributes(a_test) || case when
40+ a_test.result != ut_utils.tr_success then
41+ ' status="' || ut_utils.test_result_to_char(a_test.result) || '"' end || ' >');
4242 if a_test.result = ut_utils.tr_ignore then
4343 self.print_text('<skipped/>');
4444 end if;
@@ -78,6 +78,7 @@ create or replace type body ut_xunit_reporter is
7878 procedure print_suite_elements(a_suite ut_logical_suite, a_suite_id in out nocopy integer) is
7979 l_tests_count integer := a_suite.results_count.ignored_count + a_suite.results_count.success_count +
8080 a_suite.results_count.failure_count + a_suite.results_count.errored_count;
81+ l_suite ut_suite;
8182 begin
8283 a_suite_id := a_suite_id + 1;
8384 self.print_text('<testsuite tests="' || l_tests_count || '"' || ' id="' || a_suite_id || '"' || ' package="' ||
@@ -86,6 +87,28 @@ create or replace type body ut_xunit_reporter is
8687 -- TODO - decide if to use 'skipped' or 'disabled'
8788 -- <system-out/>
8889 -- <system-err/>
90+ if a_suite is of(ut_suite) then
91+ l_suite := treat(l_suite as ut_suite);
92+
93+ if l_suite.before_all.serveroutput is not null or l_suite.after_all.serveroutput is not null then
94+ self.print_text('<system-out>');
95+ self.print_text('<![CDATA[');
96+ self.print_text(trim(l_suite.before_all.serveroutput) ||
97+ trim(chr(10) || chr(10) || l_suite.after_all.serveroutput));
98+ self.print_text(']]>');
99+ self.print_text('</system-out>');
100+ end if;
101+
102+ if l_suite.before_all.error_stack is not null or l_suite.after_all.error_stack is not null then
103+ self.print_text('<system-err>');
104+ self.print_text('<![CDATA[');
105+ self.print_text(trim(l_suite.before_all.error_stack) ||
106+ trim(chr(10) || chr(10) || l_suite.after_all.error_stack));
107+ self.print_text(']]>');
108+ self.print_text('</system-err>');
109+ end if;
110+ end if;
111+
89112 for i in 1 .. a_suite.items.count loop
90113 if a_suite.items(i) is of(ut_test) then
91114 print_test_elements(treat(a_suite.items(i) as ut_test));
0 commit comments