Choose the most specific and appropriate testify assertion methods for your test scenarios to improve test clarity, error reporting, and maintainability.
Key guidelines:
require
in EventuallyWithT
functions: As of testify v1.10.0, require
can be used within EventuallyWithT
and will cause early return on failure, triggering a retry on the next tick.require.EventuallyWithT(t, func(t *assert.CollectT) {
trackers, err := auth.GetActiveSessionTrackers(ctx)
require.NoError(t, err) // Use require, not assert
require.Len(t, trackers, 1)
require.Equal(t, helpers.HostID, trackers[0].GetAddress())
})
require.ErrorContains
for error message validation.// Instead of:
require.Error(t, err)
require.Contains(t, err.Error(), tt.errMsg)
// Use:
require.ErrorContains(t, err, tt.errMsg)
// Instead of string comparison:
require.Contains(t, captureStdout.String(), tc.wantOutput())
// Use semantic comparison:
require.JSONEq(t, expectedJSON, actualJSON)
require.YAMLEq(t, expectedYAML, actualYAML)
These specialized assertions provide better error messages, handle formatting differences, and make test intentions clearer to other developers.
Enter the URL of a public GitHub repository