On checking this against the "old" version again, I found this has "introduced" a bug.
I say "introduced" because really the code was *already* wrong to be using array[~array.mask], as it does not do the expected when the mask is a pure boolean instead of an array.

I think my preferred solution would be to use full mask arrays if not insisting on exact equality (i.e. "strict=False").
I.E. something like this ...
```
        * strict (bool):
            If True, perform a complete mask and data array equality check.
            If False (default), the masks are compared as full arrays and the
            data array comparison includes only the unmasked elements.

        """
        if strict:
            np.testing.assert_array_equal(a.mask, b.mask)
            np.testing.assert_array_equal(a.data, b.data)
        else:
            a_mask, b_mask = ma.getmaskarray(a), ma.getmaskarray(b)
            np.testing.assert_array_equal(a_mask, b_mask)
            np.testing.assert_array_equal(a[~a_mask].data, b[~b_mask].data)
```

I tested this and it seems to deliver the goods, i.e. behaviour like  ...
between...
  *  ```ma.array([1,2], mask=False)``` and 
  *  ```ma.array([1,2], mask=[False, False])```

...compare result, strict = True/False  --> FAIL / OK 

Of course, all of this applies equally to "assertMaskedArrayAlmostEqual" (the very next thing)