IDK(是否重复),但我确定找不到相关项目。我一直期望这真的很简单,因为通过反射它非常简单,但是我宁愿使用正确的工具来完成它。
澄清:旧版代码。没有吸气剂/二传手。
为此使用Whitebox是否正确?我以为是“超限”,即内部API的一部分?…或者那是严格的Mockito吗?
请参阅Whitebox.setInternalState(...)
。
例如-给定的类A
需要测试:
public class A {
private B b;
public A() {
b = new B();
}
public void doSomething() {
b.doSomething();
}
}
具有以下私有实例B
:
public class B {
public void doSomething() {
// some long running, resource intensive process...
System.out.println("Real B.doSomething() was invoked.");
}
}
然后Whitebox
可以用来设置的私有状态,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();
}
}
问题内容: 我正在尝试模拟私有静态方法。见下面的代码 这是我的测试代码 但是我运行的每个瓦片都会出现此异常 我想我在嘲弄东西时做错了什么。有什么想法我该如何解决? 问题答案: 为此,您可以使用和。 此外,您必须在测试类中指定PowerMock运行器,并准备要进行测试的类,如下所示: 希望对您有帮助。
使用PowerMockito模拟私有方法的泛型参数的正确方法是什么?
我试图模拟一个私有方法(executeGetRequest),在我声明要为私有方法返回的模拟的那一行中,私有方法实际上是用null参数执行的,因此抛出了一个NullPointerException。 VlcPlayerMinimal。爪哇: VlcPlayerMinimalTest。爪哇: 堆栈跟踪: 它似乎PowerMockito实际上是调用的方法,我试图在行PowerMockito.do返回(
有人能帮帮我吗?提前谢了。
我目前正试图模拟类中的私有final static对象。我的目标似乎没有被恰当地模仿。 示例: 代码:在主类中 嘲笑:在我的测试课上,我有 但是obj不返回我在执行时指定的值 并将实际运行。 任何建议都将是有帮助的,我也不能改变Main类中的任何代码,谢谢。