java - 如何在java中模拟一个不返回任何内容的函数

标签 java junit mockito java-7 powermock

public class Service1 {

private Service2 service2;

// FunctionA
private FuncA(Object1 obj1) {

    /*
    code to make Obj2 from Obj1
    */

    service2.FuncB(obj2);
  }

}

public class Service2 {
  // FunctionB
  private FuncB(Object2 obj) {
    obj.field=value;  
  }

}

我正在尝试为 Func A(如上所述)编写单元测试用例,并且需要模拟 Func B(如上所述)。 请。帮助我如何在 Java 7 中做到这一点。

诗。 Java 新手

最佳答案

您需要将要测试的 Service1 类中的 service2 成员设置为由模拟框架创建的模拟对象。这可能看起来像这样:

public class Service1Test {

    @Mock
    private Service2 service2;

    @InjectMocks // service2 mock will be injected into service1
    private Service1 service1;

    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void doTest() {

        Object someObject = null; // create object matching your needs
        service1.FuncA(someObject);

        Object someOtherObj = null; // create object matching your needs
        verify(service2, times(1)).FuncB(someOtherObj);

        // perform additional assertions
    }
}

关于java - 如何在java中模拟一个不返回任何内容的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970148/

相关文章:

java - 没有捕获 NoSuchElementException

eclipse - java.lang.exception 没有可运行的方法 junit

java - Eclipse:避免将某些依赖项包含在 JUnit 运行时类路径中

java - 模拟 ResourceInfo 的 getResourceClass

android - 当进行 retrofit2 请求时,单元测试 Call 对象为 null

java - 为什么在 Java 中调用同一个类中的构造函数时会出现不明确的错误?

java - Java 代码中的结果格式不正确

java - 作业调度程序安装不工作 - sos-berlin 软件

selenium - 将 Selenium HTML 测试转换为 JUnit 的自动化方法?

java - Mockito 验证字符串集合