Test and coverage
We have unit tests, regression tests, and feature tests for quality assurance.
Directory structure
We have tests under test/
directory. There are several test data
in test/data/
directory.
There are two type of tests.
- Unit tests
- Linting tests
Test coverage
OmegaT project prepare JaCoCo test suite to check test coverage.
When you use IDE such as IntelliJ IDEA or Eclipse, please access Gradle task menu
from verification
group to launch jacocoTestReport
task.
Otherwise, you can run it from terminal ./gradlew jacocoTestReport
A test report will be appeared in build/reports/jacoco/html/index.html
and
you can examine the result on your web browser.
SpotBugs static analysis tool
You are recommend to check your code with SpotBugs static analysis tool. We check it on CI/CD environment for every commit. We treat all SpotBugs issues as error.
You should fix all the SpotBugs errors before posting the patch to core team. When you push a GitHub Pull-Request, we always check unit tests and spotbugs test.
You can run spotbugs through verification
task group of IDE's Gradle tasks menu
and click SpotbugsMain
.
Otherwise, you can run it on terminal ./gradlew spotbugsMain
A test result will be appeared in build/reports/spotbugs/main.html
.
Unit tests
You are recommended to write unit tests when you modify or add features anywhere in OmegaT code. Test codes are organized in several sections/packages.
- core
- filters
- gui
- languagetools
- tokenizer
- util
TestCore and TestCoreInitializer
There are two core test classes to perform headless test cases.
TestCore class
TestCore
class provide a setUpCore
method to setup temporal omegat configuration and
dummy GUI parts such as dummy main window, dummy menu items and dummy editor panes.
Test writer can inherit TestCore
class and then concentrate to write actual cases.
GUI tests
Unit test for GUI is a bit difficult to write.
Many test cases use SwingUtilities#invokeAndWait
to change or get GUI properties.
Then it assert its value.
Filter tests
Filter writer are strongly recommended to write tests with variety of source files. You are also recommended to write tests with variety of options combinations.
Linting tests
There are linting test cases under test/src/svn/
directory, where the name
come from histrical reason, our project managed the code on subversion repository
from the start year 2002 to 2015.
We have three type of tests.
Test class | Note |
---|---|
BundleTest | Check Bundle*.properties and shortcut properties |
CopyrightTest | Check copyright header |
PluginsTest | Check plugin properties integrity |