This plugin extends the existing gradle-cobol-plugin for unittests.
This gradle plugin is based on the existing github project cobol-unit-test.
The new source code if fully backward compatible, but enables new features:
- No redundant configuration (the plugin provides a default-configuration for all tests)
- Fast and simple test execution by gradle with the task :cobolUnit
- Simple testcoverage computation with task cobolUnit computeTestCoverage . This task generates a cobertura-testcoverage xml file.
- Integration tests (full application + ressource build)
- Integration tests with specific ressource files
gradle-cobol-plugin Package of the core and the unittest plugin.
The base gradle plugin (compile, run)
gradle-cobol-plugin-unittest-extension Adds unittests and testcoverage to the base plugin
gradle-cobol-plugin-example This Project contains many gradle-cobol example projects
Further Reading:
- GNUCobol-compiler The cobol compiler
- cobol-unit-test The documentation of the unit-test feature
| Compiler | Code format | unit test | unit test testcoverage | integration test | integration test coverage |
|---|---|---|---|---|---|
| GnuCobol / Open Cobol 1.1 | fixed | full support | full support | --- | --- |
| GnuCobol 2 | fixed | full support | full support | full support | full support |
| GnuCobol 3rc | fixed | full support | full support | full support | full support |
Add the plugin to the gradle-cobol-plugin classpath:
build.gradle:
plugins {
id 'de.sebastianruziczka.Cobol' version 'latest'
}
Or hardcode specific versions in your build.gradle (not preferred):
plugins {
id 'de.sebastianruziczka.Cobol' version '0.0.40'
}
settings.gradle:
pluginManagement {
repositories {
maven {
url 'https://repo.sebastianruziczka.de/mvn/'
}
}
}
| unit test | integration test | |
|---|---|---|
| gradle command | testUnit |
testIntegration |
| testcoverage | available 1) | available 2) |
| compile strategy | compile test and target | compile all cobol sourcefiles |
| ressource strategy | no ressources available | use sources in /res/main/cobol and res/integrationtest/cobol/<testname> |
| additional env variables | COBC_INTERACTIVE='N' | COBC_INTERACTIVE='N' |
failing test kills check |
yes | yes |
-
set
unittestCodeCoverage = truein your build gradle and execute taskstestUnit computeTestcoverage -
set
integrationtestCodeCoverage = truein your build gradle and execute taskstestIntegration computeIntegrationTestCoverage
File conventions:
- Source file (target):
<module>/<filename>.<cobol.srcFileType>e.g.CRTDB/MAIN.cbl - Test file :
<module>/<filename><cobol.unittestPostfix>.<cobol.srcFileType>e.g.CRTDB/MAINUT.cbl - Note: properties starting with
cobol.are configured in yourcobol-block in yourbuild.gradle
- Source file (target):
<module>/<filename>.<cobol.srcFileType>e.g.CRTDB/MAIN.cbl - Test file :
<module>/<filename><cobol.integrationtestPostfix>.<cobol.srcFileType>e.g.CRTDB/MAINIT.cbl - Test ressources:
<cobol.resIntegrationTest>/<module>/<filename>/e.g.res/integrationtest/cobol/CRTDB/MAIN/. All items in this folder will be copied in your build/exectution-directory of our integration test. Ressources fromres/main/cobolwill be replaced. - Note: properties starting with
cobol.are configured in yourcobol-block in yourbuild.gradle
Source Directory:
- src/main/cobol/CRTDB/MAIN.cbl
- src/main/cobol/CRTDB/OTHER.cbl
Test Directory:
- src/test/cobol/CRTDB/MAINIT.cbl --> Integration Test
Ressources:
- res/main/cobol/CRTDB/database1.db --> ressource version
- res/main/cobol/CRTDB/database2.db --> ressource version
Integration test ressources
- res/integrationtest/cobol/CRTDB/MAIN/CRTDB/database1.db --> integrationtest version
The cobol integration test for the file CRTDB/MAIN.cbl will contain the following files:
Integration test directory:
- $dir/CRTDB/MainIT.so
- $dir/CRTDB/OTHER.so
- $dir/CRTDB/database1.db --> integrationtest version (replaced ressource version)
- $dir/CRTDB/database2.db --> ressource version