Closed nsinkov closed 10 years ago
Yes, seems like there is a subtle bug here; I will look into it.
Two details in the example tests catch the attention, though; if you can clarify I would appreciate: 1) Why the partial mocking with @Mocked("num"), etc.? Does the (real) test actually need to execute the real code of some methods, while others are mocked? 2) null is the default result for any method returning a reference type, so recording "result = null" for them is redundant. Or is there something I missed?
"Does the (real) test actually need to execute the real code of some methods, while others are mocked?" correct
"null is the default result for any method returning a reference type, so recording "result = null" for them is redundant. Or is there something I missed?" yeah, that's just for this test code - not null in the real code
I have two interfaces and I am mocking one method on each one. I'm using the @Capturing annotation. But simply having the @Mocked parameters in a different order causes one of the interfaces to not be mocked.
(The same happens if the @Mocked parameters are fields of the test class - the order matters)
The code below has two identical tests. One fails only because the parameters are in a different order. (I believe that both tests should pass)
code:
import mockit.Capturing; import mockit.Mocked; import mockit.NonStrictExpectations; import mockit.integration.junit4.JMockit;
import org.junit.Test; import org.junit.runner.RunWith;
@RunWith(JMockit.class) public class InterfaceMocks {
}