Dependency injection 使用PowerMock&;莫基托
如何使用PowerMock&Mockito为下面的类创建JUnit测试用例。 我想要注入的类是最后一个类,所以我需要使用PowerMock来模拟它。 还要注意,我更喜欢使用DI而不是setter来注入它Dependency injection 使用PowerMock&;莫基托,dependency-injection,mockito,powermock,Dependency Injection,Mockito,Powermock,如何使用PowerMock&Mockito为下面的类创建JUnit测试用例。 我想要注入的类是最后一个类,所以我需要使用PowerMock来模拟它。 还要注意,我更喜欢使用DI而不是setter来注入它 import javax.inject.Inject; public class ObjectA { // Use DI to Inject a mock for this 'final' class @Inject private ObjectB objectB;
import javax.inject.Inject;
public class ObjectA {
// Use DI to Inject a mock for this 'final' class
@Inject
private ObjectB objectB;
public ObjectA() {
}
public void someMethod() {
if (null == this.objectB) {
throw new IllegalStateException("Failed to inject ObjectB");
}
this.objectB.someOtherMethod();
}
}
此时不需要PowerMock。莫基托可以做所有的工作
public class ObjectATest
{
@Mock
private ObjectB objectB;
@InjectMocks
private ObjectA objectA;
@Before
public void setup()
{
MockitoAnnotations.initMocks(this);
}
@Test
public void test()
{
try
{
objectA.someMethod();
}
catch(IllegalStateException e)
{
Assert.fail();
}
}
}
你可以使用这个类。例如,假设您创建了一个名为objectBMock
的ObjectB
模拟,以及一个名为ObjectA
的ObjectA
实例:
Whitebox.setInternalState(objectA, objectBMock);
这将“注入”
objectBMock
到objectA
问题是Mockito无法模拟最终的类object如果您同意您的答案不正确,您可以成功删除它。