如何使用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();
}
}
答案 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
。