当前位置: 首页 > 知识库问答 >
问题:

在私有方法中模拟方法

柳胜
2023-03-14
@InjectMocks private ClassToTest classToTest;

@Mock private ClassToInject classToInject;

@Before
public void setup() {
initMocks(this);
}

@Test
public void test() {
Classx mockClassObj = Mockito.mock(Classx.class);
when(classToInject.publicMethod1(mockClassObj)).thenReturn(1000);

classToTest.publicMethod();
}

克拉斯托斯特。publicMethod-->classtotest.privateMethod(不是mocking)-->classtoinject.publicMethod1(想要mock)

类如下所示

class ClassToTest {
@Inject ClassToInject classToInject;

public publicMethod() {
privateMethod();
}

private privateMethod() {
int x = classToInject.publicMethod1();
// use the return value
// throw exception
}

共有1个答案

荆煌
2023-03-14

您模拟的是classtoinject.publicMethod1(mockClassObj),而不是classtoinject.publicMethod1()。但是您的代码调用了classtoinject.publicmethod1();

int x = classToInject.publicMethod1(); // you invoked no parameter method

要调用的Check方法。

如果要调用classtoinject.publicmethod1(),请引用以下代码

@RunWith(MockitoJUnitRunner.class)
public class MockedTest {

    @InjectMocks
    private ClassToTest classToTest;
    
    @Mock
    private ClassToInject classToInject;
    
    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }
    
    @Test
    public void test() {
        Mockito.when(classToInject.publicMethod1())
                .thenReturn(1000);
        
        classToTest.publicMethod();
    }
    
    
}

class ClassToTest{
    ClassToInject classToInject;
    
    public void publicMethod() {
        privateMethod();
    }
    
    private int privateMethod() {
        int x = classToInject.publicMethod1();
        throw new NullPointerException(String.valueOf(x));
    }
}

class ClassToInject{
    
    public int publicMethod1() {
        return 0;
    }
}
java.lang.NullPointerException: 1000
 类似资料:
  • 我试图模拟一个私有方法(executeGetRequest),在我声明要为私有方法返回的模拟的那一行中,私有方法实际上是用null参数执行的,因此抛出了一个NullPointerException。 VlcPlayerMinimal。爪哇: VlcPlayerMinimalTest。爪哇: 堆栈跟踪: 它似乎PowerMockito实际上是调用的方法,我试图在行PowerMockito.do返回(

  • 问题内容: 我有一个关于使用PHPUnit模拟类中的私有方法的问题。让我举一个例子: 我该如何对私有方法的结果进行存根测试以测试公共函数的 更多代码 部分。 问题答案: 通常,您只是不直接测试或嘲笑私有和受保护的方法。 您要测试的是您的类的 公共 API。其他所有内容都是您的类的实现细节,并且如果更改它,则不应“破坏”您的测试。 当您发现“无法获得100%的代码覆盖率”时,这也对您有所帮助,因为您

  • 我正在尝试测试下一种方法: 称为PrivateMethod: asyncTask的执行无法在Mockito的测试中完成,所以我需要以某种方式模拟它。我试着用PowerMock来嘲弄私有方法: 这在PowerMockito行(NullPointerException)中给了我一个异常,它说 方法引发了“org.mockito.exceptions.Misusing.UnfinishedStubbin

  • 有人能帮帮我吗?提前谢了。

  • 我试图在测试的类中模拟一个私有方法,如下所示。 现在我需要测试方法和mock。 我尝试创建间谍的上述类,但该方法得到调用时,我这样做下面 在第二行本身被调用。而且,不会被模仿。 也许我用错误的方式创建了间谍对象?无法执行

  • 我有一门课看起来像这样: 我想使用Mockito和Powermock为此编写一个单元测试。我知道我可以这样模仿私有方法: 但是我如何告诉它抛出异常呢?我知道会是这样的: 那里有什么? 请注意,异常是一个私有内部类,因此我不能只执行,因为从单元测试中无法访问。