С помощью методов 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
}
}