Repository navigation
Reporters
The extension registers reporters per run. Two are always present; coverage is added only when running with coverage:
| Reporter | Output | Purpose |
|---|---|---|
ut_documentation_reporter |
UT_OUTPUT_BUFFER_TMP (in-database, streamed) |
Test output in the run log |
ut_junit_reporter |
UT_OUTPUT_BUFFER_TMP (in-database, streamed) |
Results → Test Explorer |
ut_coverage_cobertura_reporter |
UT_OUTPUT_BUFFER_TMP (in-database, streamed) |
Coverage → gutters + Coverage tab (only with coverage) |
All reporters write to the same in-database buffer table
(UT_OUTPUT_BUFFER_TMP); there are no results.xml/coverage.xml files. The
extension polls the buffer and streams the output in real time.
Before running with coverage, the extension queries the database via
TABLE(ut_runner.get_reporters_list()) — scoped to the discovered utPLSQL schema
prefix. If UT_COVERAGE_COBERTURA_REPORTER does not exist (e.g., outdated
utPLSQL), coverage is skipped with a warning in the output. Test execution is
never blocked.
Setting utplsql.additionalReporters — included in every run:
The default reporters are automatically deduplicated — you don't need to remove them from the list.
Palette command utPLSQL: Select Additional Reporter...:
- Opens a QuickPick with the dynamic list of reporters available in the database
- The chosen reporter is stored in the session state and applied to the next
run (consumed by
executeRunOracleviaconsumeExtraReporter(), logged as[info] Reporter adicional da sessão)
To actually include an extra reporter, use the fixed utplsql.additionalReporters
setting.

The QuickPick lists the reporters reported by the database; the chosen reporter
is stored in the session state and applied to the next run (consumed by
executeRunOracle via consumeExtraReporter()).
Command utPLSQL: Run with Reporter (Export) (Test Explorer item context menu)
runs the selection with any reporter available in the database and writes the
output to a dedicated Output channel or to a file (.xml for junit/sonar/cobertura,
.txt otherwise). It does not change the results in the Test Explorer.
| Setting | Default | Description |
|---|---|---|
utplsql.reporter.clientCharacterSet |
"" |
Client charset (a_client_character_set); empty uses the reporter default. |
utplsql.reporter.colorConsole |
false |
ANSI color (a_color_console) for textual console reporters. |
Minimal example of a PL/SQL reporter that logs to a table:
create table test_report_log (
test_name varchar2(200),
status varchar2(20),
duration interval day to second,
run_ts timestamp default systimestamp
);
create or replace package custom_reporter as
-- %suite(Custom Reporter)
procedure before_calling_run;
procedure after_calling_run;
procedure before_calling_suite(a_suite ut_suite_item);
procedure after_calling_suite(a_suite ut_suite_item);
procedure before_calling_test(a_test ut_test);
procedure after_calling_test(a_test ut_test);
end;
/
create or replace package body custom_reporter as
procedure before_calling_run is begin null; end;
procedure after_calling_run is begin null; end;
procedure before_calling_suite(a_suite ut_suite_item) is begin null; end;
procedure after_calling_suite(a_suite ut_suite_item) is begin null; end;
procedure before_calling_test(a_test ut_test) is begin null; end;
procedure after_calling_test(a_test ut_test) is
v_status varchar2(20);
begin
select status into v_status
from ut_test_result where test_id = a_test.id;
insert into test_report_log (test_name, status, duration)
values (a_test.name, v_status, a_test.execution_time);
end;
end;
/To use it, add it to additionalReporters:
"utplsql.additionalReporters": ["CUSTOM_REPORTER"]Custom reporters receive callback calls from the utPLSQL framework during execution. For API details, see the utPLSQL documentation.
- Getting Started
- Usage
- Advanced Tools
- Reference
- Development
- Help