使用PowerMock进行依赖注入&的Mockito

时间:2014-06-06 10:23:50

标签: dependency-injection mockito powermock

如何使用PowerMock& amp;创建以下类的JUnit测试用例?的Mockito。 我要注入的类是最终类,所以我需要使用PowerMock来模拟它。 另请注意,我宁愿使用DI而不是使用setter来注入它。

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();
    }
}

2 个答案:

答案 0 :(得分:0)

此时不需要PowerMock。 Mockito可以做所有的工作。

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();
        }
    }
}

答案 1 :(得分:0)

您可以使用Whitebox课程。例如,假设您创建了一个名为ObjectB objectBMock的模拟和名为ObjectA的{​​{1}}实例:

objectA

这会将Whitebox.setInternalState(objectA, objectBMock); “注入”objectBMock