junit - 如何模拟没有参数的 void 方法?
问题描述
例如:
Class A{
string s = null;
public void method(){
s="Sample String";
}
}
我有一个类似场景的 void 方法。我该如何测试这种 void 方法?
解决方案
使用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
}
}
推荐阅读
- sql - 如何根据特定字段更新具有数字总和的表?
- javascript - 使用 jest-puppeteer 对文本字段进行 Webscrape 测试
- swift - 带有表情符号的推送通知(Firebase + iOS)
- json - 如何解决jsonb中的递归嵌套树?
- c# - Visual Studio 说我的变量在私有方法中没用
- tensorflow - 使用 TensorFlow 2 和 Keras 通过网络将多组输入传递到不同的损失函数中
- javascript - 输入框内的值没有改变
- java - 支持多达 ZonedDateTime 的多种格式作为请求参数;如果缺少,请设置默认时间和区域
- javascript - 根据场景格式化日期的正确方法
- javascript - 轮播 javascript 更改初始图像