Use the t.Run
subtest form. This assists debugging by printing the name of
the table entry without additional parameters to t.Log and t.Error later on.
It also means that the -run
and -bench
flags can be used to filter a specific
test without excessive comment-and-rebuild cycles.
Prefer to construct the subtest’s name from the test parameters with
fmt.Sprintf
, otherwise use a name
field.
When comparing results, use deep.Equal
. The parameter order should always be
expected
, then observed
. This makes the diff output read like “the observed
value is not equal to the expected value.”
If there is a non-nil diff result, emit it with t.Error(diff)
. If multiple
diffs are emitted in a single test, prefix the emission with a t.Log
of the
name of the result variable or function under test.