For version 3 has been a complete rewrite of the framework, the way it can be used is different to the previous versions, but also more in line with other modern unit-testing frameworks like JUnit and RSpec.
There is a migration tool that can help you to migrate your existing utPLSQL v2 tests to the v3 capabilities.
Feature comparison¶
| Feature | Version 2 | Version 3 |
|---|---|---|
| Easy to install | Yes | Yes |
| Documentation | Yes | Yes |
| License | GPL v2 | Apache 2.0 |
| Tests Creation | ||
| Declarative test configuration | No | Yes - Annotations1 |
| Tests as Packages | Yes | Yes |
| Multiple Tests in a single Package | Yes | Yes |
| Optional Setup/Teardown | No | Yes |
| Different Setup/Teardown For Each Test in a Single Package |
No | Yes - Annotations1 |
| Suite Definition Storage | Tables | Package - Annotations1 |
| Multiple Suites | Yes | Yes |
| Suites can contain Suites | No | Yes |
| Automatic Test detection | No | Yes - Annotations1 |
| Unconstrained naming of Test packages | No - prefixes | Yes - name not relevant |
| Require Prefix on Test procedures | No - prefixes | Yes - name not relevant |
| Auto Compilation of Tests | Yes | No (Let us know if you use this) |
| Assertion Library | 30 assertions2 | 26 matchers (13 + 13 negated) |
| Extendable assertions | No | Yes - custom matchers |
| PLSQL Record Assertions | generated code through utRecEq Package | possible on Oracle 12c+ using cursor matchers |
| Test Skeleton Generation | Yes | No (Let us know if you use this) |
| Test Execution3 | ||
| Single Test Package Execution | Yes | Yes |
| Single Test Procedure Execution | No | Yes |
| Test Suite Execution | Yes | Yes |
| Subset of Suite Execution | No | Yes |
| Multiple Suite Execution | No | Yes |
| Organizing Suites into hierarchies | No | Yes |
| Code Coverage Reporting | No | Yes |
| Html Coverage Report | No | Yes |
| Sonar XML Coverage Report | No | Yes |
| Coveralls Json Coverage Report | No | Yes |
| Framework Transaction Control | No | Yes - Annotations1 |
| Test Output | ||
| Real-time test execution progress reporting | No | Yes |
| Multiple Output Reporters can be used during test execution | No | Yes |
| DBMS_OUTPUT | Yes | Yes (clean formatting) |
| File | Yes (to db server only) | Yes (on client side) |
| Stored in Table | Yes | No (can be added as custom reporter) |
| XUnit format support | No | Yes |
| HTML Format | Yes | No |
| Custom Output reporter | Yes-needs configuration | Yes - no config needed |
1 Annotations are specially formatted comments in your package specification. This enables declarative test configuration that is coupled with the source code. See Documentation for more details.
2 utAssert2 package - Contains 59 Assertions - 2 Not implemented = 57, 28 are duplicated only change on outcome_in parameter 57-28 = 29, utPipe package - Contains 1 Assertion 29 + 1 = 30
3 Test execution comparison is in a single call so the results are combined. We know it was always possible to group in any way with multiple calls. But that may not be desired under a CI system where you want a single JUnit XML Output.
Created: October 11, 2019 15:14:07