Take the 2-minute tour ×  I have an interface, e.g.:  public
interface Thing {   FrobResult frob(FrobInput);   And several
implementations of that interface (e.g. NormalThing,
ImmutableThing, AsyncThing) that I am trying to test.  Many of
my test methods are really about ensuring that the interface is
implemented correctly, and thus are duplicated across each Thing
implementation. In JUnit 3 a common solution to this would be to
create a base class (extending TestCase) that is then subclassed
by each implementation class. But is this the correct approach
for JUnit 4?  Possible alternatives in (I believe) ascending
order of preference:    1. Cut'n'paste the duplicated test
methods. Not DRY at all, but I guess less worrisome in tests
than it would be in production code.    2. Create an abstract
class with @Test methods, and subclass it for each
implementation test class. (Commonly seen with JUnit 3 tests --
is this still a good way to go in JUnit 4?)    3. Put the common
test methods into a helper class, and in