...
It is possible to run graphical tests on a headless environment using Xvfb. Given that you have xvfb installed, you simply need to run
Maven build using xvfb
Code Block |
---|
xvfb-run -s "-screen 0 1280x1024x24" $MAVEN_BIN/mvn clean |
...
install
|
You can also run headless tests from your IDE by starting a Xvfb server and specifying the DISPLAY variable to the DISPLAY created by the xvfb server.
...
If you don't have Xvfb or don't want to run graphical tests, you can use the bamboo profile with maven (use -Pbamboo).
This profile run a special testNG suite excluding all tests using graphical elements.
Writing tests
First, you need to narrow what kind of tests you want.
Type of tests
Unit testing
Ideally, a test is considered as a unit if there is only one class and one method under test, thus, they are small and fast but you need to restrict the test to a minimum and mock others dependencies.
A test is not a unit test anymore when there are :
- i/o processing (write or read file)
- access to a database
- network access
- More than one real component
- Gui display and interaction
Integration tests
Basically, everything that is not a unit test is an integration tests.
They are slower to run since there is more components to manage or there is some i/o processing.
End-to-end tests
Those tests bootstrap and execute the entire application. They are heavy and keep to a minimum but they are used to execute end-to-end test.
In the case of IzPack, functional tests run an installer compilation, load the created jar in the classpath and run the installer. Currently, they are installation which are tested :
- A stupid installation : It just displays an hellopanel and a finishPanel
- A basic installation : It uses the sample installation of IzPack
- The IzPack installation : It runs the IzPack self-installer