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 = true
in your build gradle and execute taskstestUnit computeTestcoverage
-
set
integrationtestCodeCoverage = true
in 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/cobol
will 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