diff --git a/source/reporters/ut_xunit_reporter.tpb b/source/reporters/ut_xunit_reporter.tpb
index 8b065b03e..a41b28f46 100644
--- a/source/reporters/ut_xunit_reporter.tpb
+++ b/source/reporters/ut_xunit_reporter.tpb
@@ -122,7 +122,7 @@ create or replace type body ut_xunit_reporter is
member function get_common_item_attributes(a_item ut_suite_item) return varchar2 is
begin
- return ' skipped="' || a_item.results_count.disabled_count || '" error="' || a_item.results_count.errored_count || '"' || ' failure="' || a_item.results_count.failure_count || '" name="' || a_item.description || '"' || ' time="' || a_item.execution_time() || '" ';
+ return ' skipped="' || a_item.results_count.disabled_count || '" error="' || a_item.results_count.errored_count || '"' || ' failure="' || a_item.results_count.failure_count || '" name="' || nvl(a_item.description, a_item.name) || '"' || ' time="' || a_item.execution_time() || '" ';
end;
end;
diff --git a/tests/RunAll.sql b/tests/RunAll.sql
index 70a3480a6..0061851db 100644
--- a/tests/RunAll.sql
+++ b/tests/RunAll.sql
@@ -134,6 +134,8 @@ exec ut_coverage.coverage_start_develop();
@@lib/RunTest.sql ut_reporters/ut_xunit_reporter.ProducesExpectedOutputs.sql
@@lib/RunTest.sql ut_reporters/ut_html_reporter.UserOverrideSchemaCoverage.sql
@@lib/RunTest.sql ut_reporters/ut_html_reporter.DefaultSchemaCoverage.sql
+@@lib/RunTest.sql ut_reporters/ut_xunit_reporter.ReportOnSuiteWithoutDesc.sql
+@@lib/RunTest.sql ut_reporters/ut_xunit_reporter.ReportOnTestWithoutDesc.sql
@@lib/RunTest.sql ut/ut.run.AcceptsCoverageFileList.sql
@@lib/RunTest.sql ut/ut.run.AcceptsCoverageFileListWithSutePaths.sql
diff --git a/tests/ut_reporters/ut_xunit_reporter.ReportOnSuiteWithoutDesc.sql b/tests/ut_reporters/ut_xunit_reporter.ReportOnSuiteWithoutDesc.sql
new file mode 100644
index 000000000..aff72377c
--- /dev/null
+++ b/tests/ut_reporters/ut_xunit_reporter.ReportOnSuiteWithoutDesc.sql
@@ -0,0 +1,47 @@
+set termout off
+create or replace package tst_package_xunit_nodesc as
+ --%suite
+
+ --%test(Test name)
+ procedure test1;
+end;
+/
+
+create or replace package body tst_package_xunit_nodesc as
+ procedure test1 is begin ut.expect(1).to_equal(1); end;
+ procedure test2 is begin ut.expect(1).to_equal(1); end;
+end;
+/
+
+set termout on
+
+declare
+ l_test_report ut_varchar2_list;
+ l_output_data ut_varchar2_list;
+ l_output varchar2(32767);
+ l_expected varchar2(32767);
+begin
+ l_expected := q'[
+
+
+
+
+]';
+
+ --act
+ select *
+ bulk collect into l_output_data
+ from table(ut.run('tst_package_xunit_nodesc',ut_xunit_reporter()));
+
+ l_output := ut_utils.table_to_clob(l_output_data);
+
+ --assert
+ if l_output like l_expected then
+ :test_result := ut_utils.tr_success;
+ else
+ dbms_output.put_line('Actual:"'||l_output||'"');
+ end if;
+end;
+/
+
+drop package tst_package_xunit_nodesc;
diff --git a/tests/ut_reporters/ut_xunit_reporter.ReportOnTestWithoutDesc.sql b/tests/ut_reporters/ut_xunit_reporter.ReportOnTestWithoutDesc.sql
new file mode 100644
index 000000000..0865fd042
--- /dev/null
+++ b/tests/ut_reporters/ut_xunit_reporter.ReportOnTestWithoutDesc.sql
@@ -0,0 +1,52 @@
+set termout off
+create or replace package tst_package_xunit_nodesc as
+ --%suite(Suite name)
+
+ --%test
+ procedure test1;
+
+ --%test(Test name)
+ procedure test2;
+end;
+/
+
+create or replace package body tst_package_xunit_nodesc as
+ procedure test1 is begin ut.expect(1).to_equal(1); end;
+ procedure test2 is begin ut.expect(1).to_equal(1); end;
+end;
+/
+
+set termout on
+
+declare
+ l_test_report ut_varchar2_list;
+ l_output_data ut_varchar2_list;
+ l_output varchar2(32767);
+ l_expected varchar2(32767);
+begin
+ l_expected := q'[
+
+
+
+
+
+
+]';
+
+ --act
+ select *
+ bulk collect into l_output_data
+ from table(ut.run('tst_package_xunit_nodesc',ut_xunit_reporter()));
+
+ l_output := ut_utils.table_to_clob(l_output_data);
+
+ --assert
+ if l_output like l_expected then
+ :test_result := ut_utils.tr_success;
+ else
+ dbms_output.put_line('Actual:"'||l_output||'"');
+ end if;
+end;
+/
+
+drop package tst_package_xunit_nodesc;