 <p>You can't have multiple instances of the same <code>MockUp</code> subclass at the same time (each such mock-up would simply override the previous one when it got instantiated). Instead, add an <code>Invocation</code> parameter to your <code>@Mock</code> method, and then use the information it provides to distinguish between multiple data sets. For example:</p> <pre><code>@Test public void testClientWithVariedDataFromFastScanners() { new MockUp&lt;FastScanner&gt;() { // some data structure for test data @Mock int nextInt(Invocation inv) { int idx = inv.getInvocationIndex(); FastScanner fs = inv.getInvokedInstance(); // Find the next value by using idx or fs as a lookup index // into the data structures: int i = ... return i; } }; client.doSomethingUsingFastScanners(); } </code></pre> <p>Also, if you want to call whatever methods (including <code>static</code> methods) on a mock-up subclass, just make it a <em>named</em> class rather than an anonymous one.</p>