Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
gradle-cobol-plugin-unittest-extension/README.md.base
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
124 lines (81 sloc)
5.79 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Gradle-Cobol-Plugin-UnitTest-Extension | |
[](https://travis-ci.org/SebastianRzk/gradle-cobol-plugin-unittest-extension) | |
This plugin extends the existing [gradle-cobol-plugin](https://gradle-cobol.sebastianruziczka.de) for unittests. | |
This gradle plugin is based on the existing github project [cobol-unit-test](https://github.com/neopragma/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 environment | |
* [](https://travis-ci.org/SebastianRzk/gradle-cobol-plugin) [gradle-cobol-plugin](https://gradle-cobol.sebastianruziczka.de) Package of the *core* and the *unittest* plugin. | |
* [](https://travis-ci.org/SebastianRzk/gradle-cobol-plugin-core) The base gradle plugin (compile, run) | |
* [](https://travis-ci.org/SebastianRzk/gradle-cobol-plugin-unittest-extension)[gradle-cobol-plugin-unittest-extension](https://gradle-cobol-unit.sebastianruziczka.de) Adds unittests and testcoverage to the base plugin | |
* [](https://travis-ci.org/SebastianRzk/gradle-cobol-plugin-example)[](https://codecov.io/gh/SebastianRzk/gradle-cobol-plugin-example)[gradle-cobol-plugin-example](https://github.com/SebastianRzk/gradle-cobol-plugin-example) | |
This Project contains many gradle-cobol example projects | |
Further Reading: | |
* [GNUCobol-compiler](https://open-cobol.sourceforge.io/) The cobol compiler | |
* [cobol-unit-test](https://github.com/neopragma/cobol-unit-test) The documentation of the unit-test feature | |
## Supported versions | |
| 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 | | |
## Installation | |
Add the plugin to the [gradle-cobol-plugin](https://github.com/SebastianRzk/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/' | |
} | |
} | |
} | |
## Comparison unit <-> integration tests | |
| | 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 | | |
1) set `unittestCodeCoverage = true` in your build gradle and execute tasks `testUnit computeTestcoverage` | |
2) set `integrationtestCodeCoverage = true` in your build gradle and execute tasks `testIntegration computeIntegrationTestCoverage` | |
## Unit tests | |
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 your `cobol`-block in your `build.gradle` | |
## Integration tests | |
* 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 from `res/main/cobol` will be replaced. | |
* Note: properties starting with `cobol.` are configured in your `cobol`-block in your `build.gradle` | |
### Example with default settings: | |
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 | |