utPLSQL/utPLSQL-java-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build StatusBuild Status

This is a collection of classes, that makes it easy to access the utPLSQL v3 database objects using Java.

  • Uses ut_runner.run methods to execute tests.
  • Can gather results asynchronously from multiple reporters.
  • Handles compatibility for all 3.x versions of utPLSQL

This is a Maven Library project, you can add on your Java project as a dependency.

The project is hosted on packagecloud.io

packagecloud

You install this Maven repository by adding it to the section of your pom.xml. No special plugins or extensions are required.

<repositories>
  <repository>
    <id>utplsql-java-api</id>
    <url>
      https://packagecloud.io/utplsql/utplsql-java-api/maven2
    </url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

To use the java-api library, add this to the <dependencies> section of your pom.xml.

<dependency>
    <groupId>org.utplsql</groupId>
    <artifactId>java-api</artifactId>
    <version>3.1.0</version>
    <scope>compile</scope>
</dependency>

The latest Java-API is always compatible with all database frameworks of the same major version. For example API-3.0.4 is compatible with database framework 3.0.0-3.1.0 but not with database framework 2.x.

You can find examples for many features of the java-api in the Unit- and Integration tests.

Executing tests using default parameters:

try (Connection conn = DriverManager.getConnection(url)) {
    new TestRunner().run(conn);
} catch (SQLException e) {
    e.printStackTrace();
}

Executing tests and printing results to screen:

try (Connection conn = DriverManager.getConnection(url)) {
    Reporter documentationReporter = new DocumentationReporter().init(conn);
    
    new TestRunner()
        .addReporter(documentationReporter)
        .run(conn);
    
    documentationReporter
        .getOutputBuffer()
        .setFetchSize(1)
        .printAvailable(conn, System.out);
} catch (SQLException e) {
    e.printStackTrace();
}

There might be some features which are not available in previous versions of utPLSQL. These "optional features" are listed in the enum org.utplsql.api.compatibility.OptionalFeatures and their availability can be checked against a connection or Version-object:

OptionalFeatures.CUSTOM_REPORTERS.isAvailableFor( databaseConnection );

To handle downwards-compatibility, java-api provides an easy to use CompatiblityProxy, which is instantiated with a connection. It will check the database-version of utPLSQL and is used in several other features like TestRunner and ReporterFactory. You can also ask it for the database-version.

try (Connection conn = DriverManager.getConnection(url)) {
   CompatiblityProxy proxy = new CompatibilityProxy( conn );
   Version version = proxy.getDatabaseVersion();
} catch (SQLException e) {
    e.printStackTrace();
}

The java-api provides a ReporterFactory you can use to inject your own implementations of (java-side) reporters or reporter-handlers. It also provides a more generic approach to Reporter-handling.

If you request the Reporter-Factory for a Reporter it has no specific implementation for it will just return an instance of a DefaultReporter with the given name as SQL-Type, assuming that it exists in the database. Therefore you can address custom reporters without the need of a specific java-side implementation.

try (Connection conn = DriverManager.getConnection(url)) {
    ReporterFactory reporterFactory = ReporterFactory.createDefault( new CompatibilityProxy( conn ));
    reporterFactory.registerReporterFactoryMethod(CoreReporters.UT_DOCUMENTATION_REPORTER.name(), MyCustomReporterImplementation::new, "Custom handler for UT_DOCUMENTATION_REPORTER");
    
    Reporter reporter = reporterFactory.createReporter(CreateReporters.UT_DOCUMENTATION_REPORTER.name());
} catch (SQLException e) {
    e.printStackTrace();
}

See CONTRIBUTING.md

About

Java API for running utPLSQL v3+ unit tests from java applictions

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5