java - 如何对调用 void 方法的方法进行单元测试?

标签 java unit-testing junit

我遇到了单元测试场景的基本问题,非常感谢帮助。

我有一个类 MyService,它调用 MyRemovalService 在数据库中将标志设置为 true。


@Slf4j
@Service
@RequiredArgsConstructor
public class MyService {

    private final MyRemovalService myRemovalService;
    private final MyRepository myRepository;

    public void setFlag() {
        final List<String> records = myRepository.getData(ENUM_1, ENUM_2, ENUM_3);
        records.forEach(MyRemovalService::removeData);
    }

}


我的测试:

@ExtendWith(MockitoExtension.class)
class MyServiceTest {

    @Mock
    private MyRemovalService myRemovalService;

    @Mock
    private MyRepository myRepository;

    @InjectMocks
    private MyService myService;

    @Test
    void testMyUseCase() {
        when(myRepository.getData(any(), any(), any())).thenReturn(List.of("Test1", "Test2"));
        myService.setFlag();
    }

}

我被要求测试并检查是否使用相关数据调用 (MyRemovalService::removeData)

由于返回类型为 void,我该如何测试它?

最佳答案

您使用验证方法:

verify(myRemovalService).removeData("Test1"));
verify(myRemovalService).removeData("Test2"));

关于java - 如何对调用 void 方法的方法进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71768036/

相关文章:

java - 将 org.threeten.bp.* 和 org.joda.time* 转换为相应的 java.time.* 类的最佳方法

java - EDIFACT 语法、解析器和库 (Java)

用于 Spring junit测试的mysql

testing - ActiveMQ 的测试用例

c++ - CPPUNIT:共同基础测试

java - 对于同一接口(interface)的多个实现,应该如何编写junit测试用例?

Java "static import"与 Java 8 中的 "import static"

java - 如何获取安装 Windows 的驱动器的名称?

python - 如何运行 Jinja2 的所有单元测试?

java - Camel 单元测试 - 我们如何编写单元测试来断言 bean 的特定方法被调用?