use*_*607 0 java junit powermock powermockito
作为副本提出的解决方案不是 PowerMockito 解决方案,因此不能回答这个问题。此外,这个问题在下面得到了合理的回答。
IDK 是否是重复的,但如果是重复的,我肯定找不到相关项目。我一直期待这真的很简单,因为反射很简单,但我宁愿使用正确的工具来做。
说明:遗留代码。没有吸气剂/二传手。
为此使用 Whitebox 是否正确?我认为它是“Off Limits”,即内部 API 的一部分?……还是严格意义上的 Mockito?
见Whitebox.setInternalState(...)。
例如 - 给定A需要测试的类:
public class A {
private B b;
public A() {
b = new B();
}
public void doSomething() {
b.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
它有一个私有实例B:
public class B {
public void doSomething() {
// some long running, resource intensive process...
System.out.println("Real B.doSomething() was invoked.");
}
}
Run Code Online (Sandbox Code Playgroud)
thenWhitebox可用于设置的私有状态,A以便对其进行测试:
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.verify;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.powermock.reflect.Whitebox;
@RunWith(MockitoJUnitRunner.class)
public class ATest {
@Mock
private B b;
private A a;
@Before
public void prepareTest() {
doNothing().when(b).doSomething();
a = new A();
Whitebox.setInternalState(a, B.class, b);
}
@Test
public void doSomething() {
a.doSomething();
verify(b).doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8834 次 |
| 最近记录: |