Here are some popular free and/or freemium tools for creating a software factory for a Java project :
- Issue Tracking
- Quality Tracking Servers
- Source control
- Continuous Integration
- Quality tracking facilitators
- Jacoco – the only Java code coverage tool I know of that doesn’t require instrumented recompilation before running tests
- Static analysis tools (often already integrated with SonarQube)
- Build
I’ve written about these build tools before.
Here’s a chart showing the relative popularity of these 3 tools.
- Unit test facilitators
- Mockito (one of many tools for mocking out dependencies to isolate the unit under test, but it’s the one I recommend and have presented in detail in this blog)
- AssertJ (fluent assertions)
- Zohhak (parameterized tests with friendly annotation syntax)
- System Rules (for handling console i/o in unit tests)
There are many more unit test facilitators available for free, and I’ve developed some lesser-known open-source unit test facilitators myself.
- Integration test facilitators
- Arquillian – allows you to run a test on a Java EE server (either a remote server or one configured and launched by your test code)
- OpenEJB – a lightweight EJB framework implementation that can be launched in a test
- DBUnit – set up and clean up after tests that use real database connections
- Docker – actually, Docker is a facilitator for just about any sort of automation you want to do, but I put it in the integration test category because it allows you to spin up a database or other server from a test.
Note: do not mix the Arquillian and OpenEJB together in the same test suite – jar conflicts can ensue when tests are run manually in Eclipse
- End-to-end (functional) test facilitators
- Selenium
- Windowlicker (a swing-UI validator used in GOOS, apparently no longer maintained)
- Swtbot
There are surely other tools I’ve left out. Feel free to mention your favorites in the comments.