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

如何在循环中使用PowerMock模拟其他类的方法?

徐文斌
2023-03-14

我有一个要测试的公共void方法“a”,在“a”中我有一个以string作为迭代器的循环,在这个循环中我调用了B的公共void方法,以string迭代器作为我要模拟的参数,我想用PowerMock编写一个单元测试来测试“a”,我该如何实现这个目标呢?

共有1个答案

丌官昊天
2023-03-14

在方法“a”中是否有任何静态方法引用,如果不直接使用Mockito,PowerMock基本用于存根静态方法、模拟私有变量、构造函数等。我希望您不是在进行集成测试,所以只需要模拟类b的方法并使用Mockito.verify方法来检查您的方法是否被实际调用。请看下面我的回答。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)

public class ClassATest {

@InjectMocks
ClassA classsA;
@Mock
ClassB classB;
@Test
public void testClassAMethod() {
    //Assuming ClassA has one method which takes String array,
    String[] inputStrings = {"A", "B", "C"}; 
    //when you call classAMethod, it intern calls getClassMethod(String input)
    classA.classAMethod(inputStrings); 
    //times(0) tells you method getClassBmethod(anyString()) been called zero times, in my example inputStrings length is three,
    //it will be called thrice
   //Mockito.verify(classB, times(0)).getClassBMethod(anyString());
    Mockito.verify(classB, times(3)).getClassBMethod(anyString());
    }
}
 类似资料:
  • 我需要卸载一个静态方法 public TestESMock()引发ConfigurationException{ 有人能告诉我怎么做吗。

  • 当我尝试使用mockito和powermock(在testng框架下使用)来模拟这些变量时,我遇到了一个问题 到目前为止我所做的 但是当我试图运行上面的代码时,我得到了以下错误: > 您使用以下任一方法存根:final/private/equals()/hashCode()方法。这些方法不能被截取/验证。不支持在非公共父类上声明的模拟方法。 在when()中,您不是在mock上调用method而是

  • 问题内容: 如何模拟使用PowerMock进行测试的专用方法?我有一个类,我想使用一个调用私有方法的公共方法进行测试。我想假设私有方法可以正常工作。例如,我想要类似的东西。我发现有使用PowerMock的解决方案,但该解决方案对我不起作用。怎么做?有人有这个问题吗? 问题答案: 我在这里没有问题。使用Mockito API的以下代码,我做到了: 这是JUnit测试:

  • 问题内容: 我试图遵循这个非常相似的问题的答案中提供的示例,但是它对我不起作用。我收到以下错误消息: 我需要一个简单的模拟实例。我不需要模拟任何方法。 这是我要模拟的课程: 我有以下TestNG设置: 问题答案: 我通过扩展PowerMockTestCase类来完成这项工作,该类为TestNG处理此类事情:

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