Continuous Integration with Oracle PL/SQL, utPLSQL and Hudson

PL/SQL is not exactly the coolest technology around these days but many businesses rely on it for their day-to-day operation. The fact that it is relatively old and does not mean that you cannot apply Extreme Programming(XP) practices to PL/SQL development. A few years ago, Steven Feuerstein developed utPLSQL, a unit testing framework for PL/SQL, which covers the testing part of XP. In this post, I will show you how to apply Continuous Integration (another XP practice) to PL/SQL development using Hudson.

This article will explain how to construct a Maven project that enables you to do the following executing just a single maven command:

  • Deploy the project database schema to an Oracle database
  • Install the project PL/SQL pacakges to an Oracle database
  • Insert data specified in SQL files into the tables in the database
  • Install the utPLSQL test pacakges to an Oracle database
  • Run the utPLSQL unit tests

UPDATE: Since this article was written, we have open-sourced the Maven utPLSQL plugin.

Additionally, we will configure a Hudson project that performs all of the above when you submit a change to the source code repository (Subversion in this case) and generates a visual report showing the test results. If any test failed, Hudson can be configured to send an email to the project developers so that they can immediately investigate and fix the problem, in line with common continuous integration practices.

The Oracle database

This post assumes that you have an Oracle database available. I used an Oracle 10g XE instance running on localhost to develop this post. XE is free to download and is sufficient for development purposes.

I created a user called “testing” with password “testing” in the database and also installed the utPLSQL schema, which is a necessary step to following this example.

NOTE: If you install the utPLSQL schema into an Oracle 10g XE database, make sure that you have granted access on UTL_FILE to public as explained here (remember to connect as sysdba when doing this otherwise it won’t work).

A PL/SQL Project in Maven

Maven is a build tool which has a large number of plugins available and is very well integrated with Hudson and so is an ideal choice for contructing our PL/SQL project. If you have an existing project, it is not hard to move it to a maven-compatible structure.

In this post, we will work with a PL/SQL test project. You can download the source code for this project here. Once you’ve downloaded the code, copy it to a folder on your machine and unzip it. The example follows the Maven standard directory layout, which I have customized to suit PL/SQL development:

  • /src/main/plsql/ – PL/SQL source code (packages, functions)
  • /src/test/plsql/ – PL/SQL unit tests (written in utPLSQL)
  • /src/main/sql/ – SQL scripts for creating the schema
  • /src/main/resources/data/ – SQL scripts for inserting schema data

The source code included in the project is a modified version of two examples that come with the utPLSQL package and is not really too important here – other than it is some code for which there exists some utPLSQL tests.

Adding artifacts to the local Maven repository

NOTE: If you have not already installed Maven, follow these instructions.

Maven generally downloads libraries that it needs from the internet. However, there are two libraries which we will use in this post which are not available in any public Maven repository so we will have to install them by hand. One is the Oracle JDBC driver which is not publically available due to Oracle’s licensing restrictions and the second is the plugin that The Server Labs have developed for running utPLSQL tests, which we have not (yet at least) made publically available. Below are the instructions that you must follow to install these two artifacts before continuing:

The Maven utPLSQL plugin developed by The Server Labs

  • Download the plugin here and the required pom.xml file here
  • Execute the following in a command console to install the plugin. Note that in this case I downloaded the plugin to /tmp/maven-utplsql-plugin-10-snapshot1.jar and the pom.xml file to /tmp/pom1.xml. Change this to suite your environment.
    mvn install:install-file -Dfile=/tmp/maven-utplsql-plugin-10-snapshot1.jar -DpomFile=/tmp/pom1.xml

Oracle JDBC driver

  • In the machine on which you have installed Oracle, go to the product/10.2.0/server/jdbc/lib directory of the Oracle Home. On my ubuntu machine with Oracle 10g XE installed, this is /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/jdbc/lib.
  • Copy the ojdbc14.jar file to somewhere convenient on your machine e.g. /tmp
  • Execute the following in a command console to install the JDBC driver in the local Maven repository. Note that you should change /tmp/ojdbc14.jar to the path to which you stored the JAR in the step above.
    mvn install:install-file -Dfile=/tmp/ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=9.0.2.0.0 -Dpackaging=jar -DgeneratePom=true

Configuring the PL/SQL project

In Maven, build information is contained in the pom.xml file which is in the root of the example project. If you open this file and take a look at it, you will see that there are two maven plugins configured which do most of the work:

Maven SQL Plugin

This plugin installs the database schema, PL/SQL packages, data and PL/SQL test packages in the specified Oracle database when you run the maven test command. It relies on being able to find the PL/SQL packages, SQL files etc. in the places specified in the directory structure above. The database connection details are specified in the main <configuration> element – change these to suit your environment. Although the configuration initially looks quite complicated, it really is just the same thing repeated various times and is easy to understand once you get used to it.

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>sql-maven-plugin</artifactId>
        <version>1.3</version>
 
        <dependencies>
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc14</artifactId>
                <version>9.0.2.0.0</version>
            </dependency>
        </dependencies>
 
        <configuration>
          <driver>oracle.jdbc.driver.OracleDriver</driver>
          <url>jdbc:oracle:thin:@localhost:1521:xe</url>
          <username>testing</username>
          <password>testing</password>
          <delimiter>/</delimiter>
          <delimiterType>row</delimiterType>
          <keepFormat>true</keepFormat>
        </configuration>
 
        <executions>
          <execution>
            <id>create-schema</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <orderFile>ascending</orderFile>
              <delimiter>;</delimiter>
              <delimiterType>normal</delimiterType>
              <onError>continue</onError>
                <keepFormat>false</keepFormat>
              <fileset>
                <basedir>src/main/sql</basedir>
                  <includes>
                    <include>**/*.sql</include>
                  </includes>
              </fileset>
            </configuration>
          </execution>
 
          <execution>
            <id>create-plsql-packages</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <orderFile>ascending</orderFile>
              <fileset>
                <basedir>src/main/plsql</basedir>
                  <includes>
                    <include>**/*.pks</include>
                    <include>**/*.pkb</include>
                    <include>**/*.sf</include>
                  </includes>
              </fileset>
            </configuration>
          </execution>
 
          <execution>
            <id>insert-data</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <orderFile>ascending</orderFile>
              <delimiter>;</delimiter>
              <delimiterType>normal</delimiterType>
              <onError>continue</onError>
                <keepFormat>false</keepFormat>
              <fileset>
                <basedir>src/main/resources/data</basedir>
                  <includes>
                    <include>**/*.sql</include>
                  </includes>
              </fileset>
            </configuration>
          </execution>
 
          <execution>
            <id>create-plsql-test-packages</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <orderFile>ascending</orderFile>
              <fileset>
                <basedir>src/test/plsql</basedir>
                  <includes>
                    <include>**/*.pks</include>
                    <include>**/*.pkb</include>
                    <include>**/*.sf</include>
                    <include>**/*.sp</include>
                  </includes>
              </fileset>
            </configuration>
          </execution> 
 
       </executions>
      </plugin>

The Maven utPLSQL plugin

This is a plugin written by The Server Labs for executing utPLSQL tests from Maven. It is configured in a similar way to the Maven SQL plugin shown above. You must specify the dependency that the plugin has on the Oracle JDBC driver and the details to connect to the Oracle testing user.

The plugin allows you to specify either <packageName>xxx</packageName> or <testSuiteName>yyy</testSuiteName>. You must specify one or the other but not both. Which you specify depends on whether you want to run a utPLSQL test package or test suite. The example below specifies that we should run the ‘All’ utPLSQL test suite.

When this plugin runs, it runs the utPLSQL test suite or package and retrieves the results from the Oracle database (it looks up the results that utPLSQL stores in tables). The report that it generates is compatible with the unit test reports created by the Maven Surefire plugin.

      <plugin>
        <groupId>com.theserverlabs.maven.utplsql</groupId>
        <artifactId>maven-utplsql-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
 
        <dependencies>
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc14</artifactId>
                <version>9.0.2.0.0</version>
            </dependency>
        </dependencies>
 
        <configuration>
          <driver>oracle.jdbc.driver.OracleDriver</driver>
          <url>jdbc:oracle:thin:@localhost:1521:xe</url>
          <username>testing</username>
          <password>testing</password>
          <!-- you could specify <packageName>betwnstr</packageName> here instead of the testSuiteName element-->
          <testSuiteName>All</testSuiteName>
        </configuration>
        <executions>
          <execution>
            <id>run-plsql-test-packages</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>execute</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

Building the PL/SQL project

Open a command console and navigate to the folder which contains the downloaded project (the folder with pom.xml in it). Execute the following:

mvn test

You should see some output like this:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building PL SQL test project
[INFO]    task-segment: [test]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] No sources to compile
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [sql:execute {execution: create-schema}]
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/main/sql/mybooks/schema.sql
[INFO] 3 of 3 SQL statements executed successfully
[INFO] [sql:execute {execution: create-plsql-packages}]
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/main/plsql/betwnstr.sf
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/main/plsql/mybooks/mybooks.pkb
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/main/plsql/mybooks/mybooks.pks
[INFO] 3 of 3 SQL statements executed successfully
[INFO] [sql:execute {execution: insert-data}]
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/main/resources/data/mybooks.sql
[INFO] 6 of 6 SQL statements executed successfully
[INFO] [sql:execute {execution: create-plsql-test-packages}]
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/test/plsql/mybooks/ut_mybooks.pkb
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/test/plsql/mybooks/ut_mybooks.pks
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/test/plsql/suite.sp
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/test/plsql/ut_betwnstr.pkb
[INFO] Executing file: /media/WINDOWS/work/utplsql/plsqltest-svn/src/test/plsql/ut_betwnstr.pks
[INFO] 5 of 5 SQL statements executed successfully
[INFO] [utplsql:execute {execution: run-plsql-test-packages}]
[INFO] using JDBC driver : oracle.jdbc.driver.OracleDriver
[INFO] Running UTPLSQL test suite All
[INFO] Creating test report for run 134
[INFO] Creating test report for run 133
[INFO] [compiler:testCompile]
[INFO] No sources to compile
[INFO] [surefire:test]
[INFO] No tests to run.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Wed May 13 17:59:08 CEST 2009
[INFO] Final Memory: 16M/295M
[INFO] ------------------------------------------------------------------------

If you connect to your database as the “testing” user, you should see that new tables and packages have been created. Below is an example of how my schema looks in SQL Developer:

Artifacts in SQL Developer

Artifacts in SQL Developer

Adding Continuous Integration with Hudson

Although it is great that we can install the schema and run PL/SQL unit tests with just one Maven command, we can add even more value by building this project in Hudson – a continuous integration system. We will configure Hudson to detect changes to the source code in the Subversion repository, re-installing the database artefacts and running the unit tests each time a change is found. This helps ensure that the source code in the repository always compiles and passes all the unit tests and highlights bugs and integration problems earlier in the development process, when they are cheaper to fix.

Adding the source code to Subversion

This post assumes that you already have a Subversion repository available. If you don’t, you can read how to get and install Subversion here. In the commands below, substitute http://subversion.company.com/svn/repo/ for the URL to your subversion repository. Our repositories are organised following the recommended subversion repository layout so the source code for the main branch is always in the folder /trunk.

To import the source code into the repository, execute the following commands in a command console on a machine with the subversion client installed, adapting them for your platform and environment. Here I assume that you download and unzipped the source code for the PL/SQL test project to /tmp/plsql-test-project.

svn mkdir http://subversion.company.com/svn/repo/trunk/plsql-test-project/
cd /tmp/plsql-test-project/
svn import . http://subversion.company.com/svn/repo/trunk/plsql-test-project/

Once you’ve done the import, check that you can see the source code in a web browser by going to http://subversion.company.com/svn/repo/trunk/plsql-test-project/.

Installing Hudson

Hudson is very easy to install. Go to the Hudson homepage and click on the link to download the latest version of hudson.war. Then, in a console, go to the directory to which you downloaded hudson.war and run the following command:

java -jar hudson.war --httpPort=9080

This starts up Hudson so that it is available on port 9080 instead of the standard 8080, which tends to collide with other applications (for example Oracle XE if you have it installed).

In a web browser, go to http://localhost:9080/ to view the hudson homepage. Follow the steps below to create and configure the Hudson job to build the PL/SQL project:

  • Specify the Maven home in Manage Hudson > Configure System
  • Click on the “New Job” link in the top-left corner
  • Enter a job name and select “build maven2 project”
  • Click OK to create the job and you should be taken to the job configuration page.
  • In the Source Code Management section, click on Subversion
  • Enter the Subversion Repository URL to which you uploaded the project code i.e. http://subversion.company.com/svn/repo/trunk/plsql-test-project/
  • Enter the username/password to access Subversion if Hudson prompts you for them
  • In the build triggers section, choose ‘poll scm’ and enter the */10 * * * * in the scheduling box
  • In the ‘Goals and options’ part of the build section, enter “test” (without the quotes)
  • Click on Save

To test the build, click on the “Build Now” link in Hudson. Once the build has finished, you should see a new build in the “Build History” list of builds for the job. It should have a yellow circle next to it, indicating that the build completed ok but that there was a unit test failure. Click on the link for the build and you should see a screen like that below:

Hudson Job Test Failure screen

Hudson Job Test Failure screen

Note that at the centre of the screen, it says “Test Result (1 failure)”. Click on the failure (BETWNSTR.UT_BETWNSTR) to see the error message – EQ “zero start” Expected “abc” and got “ab”. Or, instead, click on the “Test Result” link to see the entire test report. This should show that 16 tests were executed, with 1 failure. These are all the tests that are included in the “All” utPLSQL package.

If we configure an email server in Hudson (out of the scope of this post), we can receieve email notifications if the build fails, either because of a construction problem or because there is a unit test failure.

Fixing the test failure

To get rid of the test failure, we will modify the project source code. Firstly, we must check it out from Subversion, using the commands below (which you should customize to your environment):

mkdir /tmp/plsql-checkout
cd /tmp/plsql-checkout
svn co http://subversion.company.com/svn/repo/trunk/plsql-test-project/ .

Edit line 46 of the file src/test/plsql/ut_betwnstr.pkb and change the string “abc” to “ab”. Then check the file into Subversion using the following command:

svn ci src/test/plsql/ut_betwnstr.pkb -m "fixed bug"

At this point you can either wait up to 10 mins for Hudson to detect your change in Subversion or, if you are impatient (like me!) you can click on the “build now” link in the Hudson job to force Hudson to pick up the change in Subversion and rebuild the project. When it excecutes the tests, there should now be no failures.

Conclusion

This is a long post with a lot of steps in it but most of them are setup-related. Once you have this set up, you’ll see that it is really easy to do unit testing and continuous integration with PL/SQL. This should help reduce integration time and increase the quality of the code deployed. It’s also worth mentioning that once you start using Hudson, you can take advantage of the vast number of Hudson plugins available. For example, you could update your bug and issue tracking system automatically when you check in a fix for a bug via one of the Hudson plugins.

22 Comments on “Continuous Integration with Oracle PL/SQL, utPLSQL and Hudson”

  1. #1 Gregory Haase
    on May 18th, 2009 at 2:21 pm

    Very Cool!

    I did some similar stuff with setting up a database using maven-sql-plugin at the MySQL User Conference last month. Just this morning I was thinking about moving some of our old utplsql unit tests into our new build framework and I must say your post was very timely.

    I’m looking forward to trying out the utPLSQL plugin.

  2. #2 Gregory Haase
    on May 18th, 2009 at 7:36 pm

    How hard would it be to extend this so that you could call runsuite as opposed to testsuite? I know it’s not the best practice, but for a couple of reasons we needed to break the package name/test package name convention and need to use runsuite instead.

    Also, is there any plan to publish the source?

  3. #3 Kevin McCormack
    on May 19th, 2009 at 10:35 am

    Hi Gregory,

    Thanks for your interest in this post. It’s always nice to hear that you are helping people out.

    The Maven utPLSQL plugin is pretty small so running runsuite() instead of test() or testsuite() would require only a small bit of additional code.

    We are currently investigating open sourcing the code for the plugin. Expect some news on this soon.

    Kevin.

  4. #4 Eric Elzinga
    on May 19th, 2009 at 4:12 pm

    Nice article Kevin!

    Enough info to give it a try and play with it.

  5. #5 Kevin McCormack
    on May 21st, 2009 at 12:21 pm

    We have released the source code for this Maven plugin under an Apache 2.0 license on the Google Code website. For more information, please go to:

    http://code.google.com/p/maven-utplsql-plugin/

    We hope it is useful to other people.

  6. #6 Mr. Hericus
    on May 21st, 2009 at 11:17 pm

    SQL is one of those ubiquitous tools that powers an incredible amount of software in the business and consumer worlds today. It’s great to see new ways of making it work better and fitting it into today’s tools.

    Thanks for the post!

  7. #7 Freddy Mallet
    on May 29th, 2009 at 3:00 pm

    Hi guys, I’m one of the project lead on the Sonar quality platform. We’ve written a Sonar plugin in order to analyse the PL/SQL code. This plugin can detect duplications, too complex code and violations of coding rules but …. there’s nothing about unit tests. Could be interesting to integrate the Maven utplsql plugin ;-)

  8. #8 Kevin McCormack
    on Jun 1st, 2009 at 9:07 am

    Hi Freddy,

    We’re big fans of Sonar and have deployed it as part of our Java software quality solution in various clients. I’ve noticed that the paid-for version of Sonar is capable of analysing PL/SQL code but I’ve not yet tried it out.

    You should definitely be able to get some metrics on number of tests passed/failed/executed from the utPLSQL plugin quite easily since it produces the same report as the maven surefire plugin which supplies the metrics for Java code in Sonar.

    Take a look at the plugin and let me know how you get on.

    Kevin.

  9. #9 Ulli Hafner
    on Jun 3rd, 2009 at 9:48 am

    BTW: the Hudson warnings plug-in has built-in support for Oracle Invalids, this might be a good addition to your setup:
    http://wiki.hudson-ci.org/display/HUDSON/Warnings+Plugin

  10. #10 jc
    on Jul 18th, 2009 at 2:49 am

    Hi folks,

    From your Maven configuration I see you have your packages spec and body in different files (.pks and .pkb), correct me if I’m wrong, but maybe that’s why you don’t get any dependency issues at the time of compilation, but the packages in my SCM are not separated in spec and body, rather they are in just one file (.pak), that’s the way PL/SQL Developer saves them, and there are so many packages that going down the way to pks and pkb is not an option:

    create-plsql-packages
    process-test-resources

    execute

    ascending

    src/main/plsql

    **/*.pks
    **/*.pkb
    **/*.sf

    My question is, would I get into compilation problems with my current .pak way of saving packages?

    Thank you in advance.

    Regards

  11. #11 Kevin McCormack
    on Jul 20th, 2009 at 10:43 am

    Hi JC,

    Having PL/SQL package specs and bodies in the same file should be no problem – so long as you can execute the file in SQL*Plus with no problems (e.g. @/path/to/my/package.pak) then Maven should have no problems executing them.

    Instead of including **/*.pks, **/*.pkb and **/*.sf in the create-plsql-packages config element, you’d just specify **/*.pak.

    If there are inter-dependencies between packages, then maybe you will have to specify a list of packages in a certain order instead of **/*.pak.

    Give it a go and see what happens!

  12. #12 Scott Pedersen
    on Aug 3rd, 2009 at 9:57 pm

    Hi Kevin,

    Really interesting post.

    Unfortunately I am having problems while running this command – mvn install:install-file -Dfile=C:\temp\maven-utplsql-plugin-10-snapshot1.jar -DpomFile=C:\temp\pom1.xml, the connection is refused.

    Any ideas?

    Regards,

    Scott.

  13. #13 Scott Pedersen
    on Aug 4th, 2009 at 4:32 am

    Sorted now.

    Regards,

    Scott.

  14. #14 Andrea Gariboldi
    on Nov 29th, 2009 at 10:29 pm

    grant create table to testing;

    or the testing.ut_mybooks_pkg.ut_setup fails on 10g because native dynamic pl/sql (execute immediate) needs direct (to the user, not passing by a role – eg. resource) privilege granting.

    Andrea

  15. #15 Andrea Gariboldi
    on Nov 29th, 2009 at 10:31 pm

    .. continued form previous:

    [INFO] ————————————————————————
    [ERROR] BUILD ERROR
    [INFO] ————————————————————————
    [INFO] utPLSQL results not in expected format

    Embedded error: utPLSQL results not in the expected format! Please check the utPLSQL outcome table.

    in the utp.utr_outcome:
    .: Unable to run ut_mybooks_pkg.ut_SETUP: ORA-01031: insufficient privileges

  16. #16 Wansong
    on Dec 16th, 2009 at 7:07 am

    Hi

    I got the following error, while run “mvn test”:

    [INFO] Executing file: E:\java_src\maven-utplsql-plugin\plsqltest\src\test\plsql\suite.sp
    [ERROR] Failed to execute:
    BEGIN

    utsuite.add (‘All’);

    — Add two packages for testing
    utpackage.add (
    ‘All’, ‘betwnstr’);
    utpackage.add (
    ‘All’, ‘mybooks_pkg’);

    END;

    [INFO] ————————————————————————
    [ERROR] BUILD ERROR

    I am suspecting that I haven’t installed utPLSQL. I can’t execute “@ut_i_do install” in my “Run SQL Command Line”. Did I miss “ut_i_do.sql”? If it need “ut_i_do.sql” file, where can I get it?

    Any help would be appreciated!

  17. #17 Kevin McCormack
    on Dec 16th, 2009 at 8:25 am

    Hi Wansong,

    I guess I missed an important detail – where to download the utPLSQL files from. Here is a link to version 2.2 which is (I think – I’m not at my usual machine) the version I have installed:

    http://sourceforge.net/projects/utplsql/files/utPLSQL/2.2/utplsql22.zip/download

    Hope this resolves your problems.

    Kevin.

  18. #18 Applications et bases de données, comment tester ? « Choses à faire
    on Dec 17th, 2009 at 10:48 am

    [...] [...]

  19. #19 Sajith
    on May 20th, 2010 at 10:46 am

    Great Post!

  20. #20 Bob Mc
    on Aug 16th, 2010 at 10:04 pm

    The link to the pom.xml file only shows the data, not the xml tags.

    They have up-loaded a 1.1 version of the jar file and a matching pom.xml to Google Code:

    http://code.google.com/p/maven-utplsql-plugin/

  21. #21 Devendra
    on Dec 30th, 2010 at 6:41 pm

    Nice post.
    I followed the same above mentioned steps I am able to execute my tests from maven but in maven output its saying “No tests run”, its same as the above output looks like. Do I need to do any other configuration in pom.xml to display my output corrently.

    Dev

  22. #22 Unit testing plsql | Better Code
    on Apr 23rd, 2011 at 9:30 pm

    [...] This guy got around to doing this a lot sooner than me: http://www.theserverlabs.com/blog/2009/05/18/continuous-integration-with-oracle-plsql-utplsql-and-hu… [...]

Leave a Comment