Skip to content
forked from utPLSQL/utPLSQL

A unit testing framework for PL/SQL, based on the xUnit principles

License

Notifications You must be signed in to change notification settings

Shoelace/utPLSQL

 
 

Repository files navigation

#utPLSQL v3 | Powerful PL/SQL Unit Testing Framework chat build license chat twitter


Version 3 is a complete rewrite of utPLSQL from scratch. Version 2 still supports older versions of Oracle that are no longer available. This has lead to difficult to maintain code. Yet many developers wanted to take it to the next level. The community that had developed on GitHub, decided that a new internal architecture was needed, from that version 3 was born. Currently version 3 is not complete and is not ready for a production environment as the API is not stable and changing. However it is quickly taking shape. We welcome new developers to join our community and help utPLSQL grow.

Primary Goals:

  • Easier to maintain
  • Only supports versions of Oracle under Extend Support (Currently 11.2, and 12.1)
  • API is documented in the code where possible.
  • Robust and vibrant assertion library.
  • Support for Code Coverage
  • Extensible API
  • Published upgrade/conversion path from version 2.
  • Easily called from current PL/SQL development tools
  • More permissive License to allow vendors easier ability to integrate utPLSQL.

Version 2 to Version 3 Comparison

The following table is a work in progress right now, and will change. If you have great idea that you would like to see in version 3 please create an issue on GitHub or discuss it with us in the Slack chat rooms.

Feature Version 2 Version 3
Easy to install Yes Yes
Documentation Yes Sparse - in progress
License GPL v2 Apache 2.0
Tests Creation
Declarative test configuration coupled with the source code No Yes - Annotations1
Tests as Packages Yes Yes
Multiple Tests in a single Package Yes Yes
Different Setup/Teardown
For Each Test in a Single Package
No Yes
Suite Definition Storage Tables Package - Annotations1
Multiple Suites Yes Yes
Suites can contain Suites No Yes
Automatic Test detection No Yes - Annotations1
Require Prefix on Test packages Yes No
Require Prefix on Test procedures Yes No
Auto Compilation of Tests Yes No (Let us know if you use this)
Assertion Library 30 Assertions2 Still under development
Custom Record Assertions requires generated code through utRecEq Package On Roadmap
Test Skeleton Generation Yes On Roadmap
Test Execution3
Single Test Execution Yes Yes
Test Suite Execution Yes Yes
Subset of Suite Execution No Yes
Multiple Suite Execution No Yes
Code Coverage No On Roadmap
Framework Transaction Control No Yes - Optional
Test Output
Multiple Output Reporters can be used during test execution No Yes
DBMS_OUTPUT Yes Yes (format changed)
Stored in Table Yes On Roadmap
JUnit XML Format No On Roadmap
HTML Format Yes On Roadmap
File Yes On Roadmap
Realtime test execution results No On Roadmap
Custom Output reporter Yes Yes

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 group in any way with multiple calls. But that may not be desired under CI system where you want a single JUnit XML Output.

Primary Directories

  • .travis - contains files needed for travis-ci integration
  • docs - Markdown version of the documentation
  • examples - contains example unit tests.
  • source - contains the code utPLSQL
  • lib - 3rd party libraries that are required for source.
  • tests - contains the tests written to test utPLSQL

About

A unit testing framework for PL/SQL, based on the xUnit principles

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PLSQL 92.7%
  • Shell 4.3%
  • JavaScript 2.1%
  • PLpgSQL 0.9%