首页 > 解决方案 > 如何模拟没有参数的 void 方法?

问题描述

例如:

Class A{

    string s = null;
    public void method(){

        s="Sample String";

    }
}

我有一个类似场景的 void 方法。我该如何测试这种 void 方法?

标签: junitmockingmockito

解决方案


使用void方法,您应该测试与方法中的依赖对象的交互void。我认为void没有参数的方法很少用于测试(但如果您有有效的用例,请将其添加到您的问题中)。我为您提供了一个带有参数但void作为返回类型的方法的简单示例:

public class A {

  private DatabaseService db;
  private PaymentService payment;

  // constructor

  public void doFoo() {
    if(n < 2) {
      db.updateDatabase();
    } else {
      payment.payBill();
    }
  }

}

对此的单元测试可能如下所示

@RunWith(MockitoJUnitRunner.class)
public class ATest {

   @Mock
   DatabaseService db;

   @Mock
   PaymentService payment;

   @Test
   public void testDoFooWithNGreaterTwo() {
     A cut = new A(db, payment); // cut -> class under test
     cut.doFoo(3);
     verify(payment).payBill(); // verify that payment was called
   }

   @Test
   public void testDoFooWithNLessThanTwo() {
     A cut = new A(db, payment); // cut -> class under test
     cut.doFoo(1);
     verify(db).updateDatabase(); // verify that db was called
   }

}

推荐阅读