How we should structure tests to improve velocity and reliability.
Unit tests verify if the smallest structure of a program, like functions or methods, work properly. They should test all branches in a given function and aim for 100% coverage.
Integration tests verify if separate components can work together. For instance, verify if jail
can work with the rpc.Client
using a net/http/httptest.Server
mock. It's important to keep integration tests fast, reliable and predictable.
E2e tests verify if a program works properly with external systems. It should resemble the production setup as close as possible. In our case, e2e tests would use any public testnet.
Features