- Type Parameters:
T
- type of the object being created
- All Known Implementing Classes:
MockBuilder
public interface IMockBuilder<T>
Helps the creation of partial mocks with
EasyMock
.
Example of usage:
public class MyClass { public MyClass(A a, B b) { } } public class MyClassTest { @Test public void testFoo() throws Exception { IMocksControl mockControl = createControl(); A a = mockControl.createMock(A.class); B b = mockControl.createMock(B.class); MyClass myClass = createMockBuilder(MyClass.class) .withConstructor(a, b).createMock(mockControl); // Set the expectations of A and B and test some method in MyClass } }
This class also has support for partial mocks as shown by the example below:
public class MyMockedClass {
// Empty class is also valid for IMockBuilder
.
public MyMockedClass() {
}
public void foo(int a) {
blah(a);
bleh();
}
public void blah(int a) {
}
public void bleh() {
}
}
public class MyMockedClassTest {
@Test
public void testFoo() throws Exception {
MyMockedClass myMockedClass = createMockBuilder(MyMockedClass.class)
.withConstructor().addMockedMethod("blah", int.class)
.addMockedMethod("bleh").createMock();
// These are the expectations.
myMockedClass.blah(1);
myMockedClass.bleh();
replay(myMockedClass);
myMockedClass.foo(1);
verify(myMockedClass);
}
}
Warning: There may be ambiguities when there are two different constructors with compatible types. For instance:
public class A { } public class B extends A { } public class ClassWithAmbiguity { public ClassWithAmbiguity(A a) { } public ClassWithAmbiguity(B b) { } }will cause problems if using
withConstructor(Object...)
. To solve
this, you can explicitly define the constructor parameter types to use by
calling withConstructor(Class...)
and then
withArgs(Object...)
, like this:
createMockBuilder(MyMockedClass.class).withConstructor(A.class).withArgs( new A()).createMock();
- Author:
- Henri Tremblay
-
Method Summary
Modifier and TypeMethodDescriptionaddMockedMethod
(Method method) Adds a method to be mocked in the testing class.addMockedMethod
(String methodName) Adds a method to be mocked in the testing class.addMockedMethod
(String methodName, Class<?>... parameterTypes) Adds a method to be mocked in the testing class.addMockedMethods
(Method... methods) Adds methods to be mocked in the testing class.addMockedMethods
(String... methodNames) Adds methods to be mocked in the testing class.<R> R
Create a default mock from this builder.<R> R
createMock
(String name) Create named mock from the provided mock control using the arguments passed to the builder.<R> R
createMock
(String name, IMocksControl control) Create named mock from the provided mock control using the arguments passed to the builder.<R> R
createMock
(String name, MockType type) Create a named mock of the request type from this builder.<R> R
createMock
(IMocksControl control) Create mock from the provided mock control using the arguments passed to the builder.<R> R
createMock
(MockType type) Create mock of the request type from this builder.<R> R
Create a nice mock from this builder.<R> R
createNiceMock
(String name) Create a named nice mock from this builder.<R> R
Create a strict mock from this builder.<R> R
createStrictMock
(String name) Create a named strict mock from this builder.default <R> R
mock()
Create a default mock from this builder.default <R> R
Create named mock from the provided mock control using the arguments passed to the builder.default <R> R
mock
(String name, IMocksControl control) Create named mock from the provided mock control using the arguments passed to the builder.default <R> R
Create a named mock of the request type from this builder.default <R> R
mock
(IMocksControl control) Create mock from the provided mock control using the arguments passed to the builder.default <R> R
Create mock of the request type from this builder.default <R> R
niceMock()
Create a nice mock from this builder.default <R> R
Create a named nice mock from this builder.default <R> R
Create a strict mock from this builder.default <R> R
strictMock
(String name) Create a named strict mock from this builder.Defines the arguments to be passed to the constructor of the class.Defines the empty constructor should be called.withConstructor
(Class<?>... argTypes) Defines the exact argument types for the constructor to use.withConstructor
(Object... initArgs) Defines the constructor parameters for the mocked class.withConstructor
(Constructor<?> constructor) Defines the constructor to use to instantiate the mock.
-
Method Details
-
addMockedMethod
Adds a method to be mocked in the testing class. Each call will add a new method to the result mock. The method is searched for in the class itself as well as superclasses.- Parameters:
method
- method to be mocked- Returns:
- this
-
addMockedMethod
Adds a method to be mocked in the testing class. Each call will add a new method to the result mock. The method is searched for in the class itself as well as superclasses. There must be no overload of the method. You will have to rely on the otheraddMockedMethod
s in this class if that is the case.- Parameters:
methodName
- name of the method to be mocked- Returns:
- this
-
addMockedMethod
Adds a method to be mocked in the testing class. Each call will add a new method to the result mock. The method is searched for in the class itself as well as superclasses.- Parameters:
methodName
- name of the method to be mockedparameterTypes
- types of the parameters of the method- Returns:
- this
-
addMockedMethods
Adds methods to be mocked in the testing class. Same asaddMockedMethod(String)
but to mock many methods at once.- Parameters:
methodNames
- names of the methods to be mocked- Returns:
- this
-
addMockedMethods
Adds methods to be mocked in the testing class. Same asaddMockedMethod(Method)
but to mock many methods at once.- Parameters:
methods
- methods to be mocked- Returns:
- this
-
withConstructor
Defines the constructor to use to instantiate the mock. It is expected that you callwithArgs(java.lang.Object...)
with the actual constructor argument values after this.- Parameters:
constructor
- the constructor to be called- Returns:
- this
-
withConstructor
IMockBuilder<T> withConstructor()Defines the empty constructor should be called.- Returns:
- this
-
withConstructor
Defines the constructor parameters for the mocked class. The builder will automatically find a constructor with compatible argument types. This throws an exception if there is more than one constructor which would accept the given parameters.- Parameters:
initArgs
- arguments of the constructor- Returns:
- this
-
withConstructor
Defines the exact argument types for the constructor to use. It is expected that you callwithArgs(java.lang.Object...)
with the actual constructor argument values after this.- Parameters:
argTypes
- the exact argument types of the constructor- Returns:
- this
-
withArgs
Defines the arguments to be passed to the constructor of the class. The types of the arguments must match those previously defined withwithConstructor(Class...)
orwithConstructor(Constructor)
.- Parameters:
initArgs
- the arguments to pass to the constructor- Returns:
- this
-
createMock
Create mock of the request type from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
type
- the mock type- Returns:
- the newly created mock
- Since:
- 3.2
-
createStrictMock
<R> R createStrictMock()Create a strict mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Returns:
- the newly created mock
-
createMock
<R> R createMock()Create a default mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Returns:
- the newly created mock
-
createNiceMock
<R> R createNiceMock()Create a nice mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Returns:
- the newly created mock
-
createMock
Create mock from the provided mock control using the arguments passed to the builder.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
control
-IMocksControl
used to create the object- Returns:
- the newly created mock
-
createMock
Create a named mock of the request type from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock nametype
- the mock type- Returns:
- the newly created mock
- Since:
- 3.2
-
createStrictMock
Create a named strict mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock name- Returns:
- the newly created mock
-
createMock
Create named mock from the provided mock control using the arguments passed to the builder.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock name- Returns:
- the newly created mock
-
createNiceMock
Create a named nice mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock name- Returns:
- the newly created mock
-
createMock
Create named mock from the provided mock control using the arguments passed to the builder.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock namecontrol
-IMocksControl
used to create the object- Returns:
- the newly created mock
-
mock
Create mock of the request type from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
type
- the mock type- Returns:
- the newly created mock
- Since:
- 4.0
-
strictMock
default <R> R strictMock()Create a strict mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Returns:
- the newly created mock
- Since:
- 4.0
-
mock
default <R> R mock()Create a default mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Returns:
- the newly created mock
- Since:
- 4.0
-
niceMock
default <R> R niceMock()Create a nice mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Returns:
- the newly created mock
- Since:
- 4.0
-
mock
Create mock from the provided mock control using the arguments passed to the builder.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
control
-IMocksControl
used to create the object- Returns:
- the newly created mock
- Since:
- 4.0
-
mock
Create a named mock of the request type from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock nametype
- the mock type- Returns:
- the newly created mock
- Since:
- 4.0
-
strictMock
Create a named strict mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock name- Returns:
- the newly created mock
- Since:
- 4.0
-
mock
Create named mock from the provided mock control using the arguments passed to the builder.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock name- Returns:
- the newly created mock
- Since:
- 4.0
-
niceMock
Create a named nice mock from this builder. The same builder can be called to create multiple mocks.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock name- Returns:
- the newly created mock
- Since:
- 4.0
-
mock
Create named mock from the provided mock control using the arguments passed to the builder.- Type Parameters:
R
- the returned type. In general T == R but when mocking a generic type, it won't so to be nice with the caller, we return a different type- Parameters:
name
- the mock namecontrol
-IMocksControl
used to create the object- Returns:
- the newly created mock
- Since:
- 4.0
-