Hello Sean,
this is how _in my understanding_ forall is meant to be used in PlUnit:
~~~~
$ cat
foo.pl:- module(foo, [triple/2]).
:- begin_tests(foo).
test_triple(x, xxx).
test_triple(3, 333).
test_triple(foo, foofoofoo).
test(triple_atom, [forall(test_triple(X, Y))]) :-
triple(X, Y).
:- end_tests(foo).
triple(X, Y) :-
atomic_list_concat([X, X, X], Y).
$ swipl -g 'use_module(foo), run_tests' -g halt
foo.pl% PL-Unit: foo .
ERROR: /home/boris/code/prolog/
foo.pl:9:
test triple_atom (forall bindings = [3,333]): failed
. done
% 1 test failed
% 2 tests passed
ERROR: -g use_module(foo), run_tests: false
~~~~
This is of course a simplified example, but it shows that you get to see which case failed (if you inline the three cases inside one test, and one fails, you don't know which one).