I personally think the signature should be:

    public static <T> void assertCollectionEquals(Collection<? extends T> expected, Collection<T> actual) {

...so you can do:

    List<Shape> actual = ...
    assertCollectionEquals(
        Collections.singletonList(new Square(5)),
        actual);