Testing guide

Howto write tests for SCM-Manager

SCM-Manager supports many kinds of tests to prove the functionality and integrity of the source code. This guide gives a peek how the different classes and components should be tested.

Java Unit Tests

JUnit 4

SCM-Manager is already about 10 years in development. There are still many unit tests written with JUnit 4. Whenever such areas are being worked on, the tests should be migrated to JUnit 5.

JUnit 5

Adding or changing logic in Java classes must always be backed up with meaningful unit tests. We strongly recommend using JUnit 5 with the optional extensions MockitoExtension.class for mocking and ShiroExtension.class for permission handling. For assertions we use AssertJ most of the times.

Frontend Component Tests

For frontend components tests we differ between UI tests and API tests.

Storybook

Writing fitting and responsive components can be easily done using our Storybook in the module ui-components. The storybook gives a nice overview of the existing components and prevents visual regression. Just start it with yarn storybook inside ui-components and have a look at the existing code on how our stories are written.

Jest Tests

For logic tests and api call tests we prefer jest respectively fetch-mock-jest.

Integration Tests

Java

Writing integration tests in Java we also suggest JUnit 5. This kind of integration tests are used to test whole modules via the REST-API. Parameterized tests can check integrations with different inputs/configs.

Integration Test Runner

As we needed to also test integration via the UI/Frontend and especially integrations between different plugins we created our own integration-test-runner. This test-runner is based on cypress which supports cucumber styled behaviour driven testing. Find more about it here:

Also some test examples: