构造函数中存在的 Lamda 表达式的 Junit 覆盖率

问题描述 投票:0回答:1

我正在尝试为包含 Lambda 表达式的构造函数编写 Junit

@Component
public class Child extends parent {

  @Autowired
  Child(
      SessionFactory sessionFactory, Properties properties, CqlSession cqlSession) {

    this.setPopulator(
        session ->
            properties
                .getScripts()
                .forEach(query -> cqlSession.execute(cqlSession.prepare(query).bind())));
  }
}

this.setPopulator() 它的 Parent 方法在创建 Child 对象之前被调用。

单元测试中未涵盖 this.setPopulator() 中的 Lambda 表达式。

this.setPopulator() 将 Populator.java 作为参数,它是方法“populate()”的功能接口。

java junit mockito junit5 spring-test
1个回答
0
投票

您可能可以做的是查看使用正确的参数调用 setPopulator 。可以使用“Mockito.verify”来实现。

此外,您还可以看到“cqlSession.execute()”被调用了特定的次数,并且参数正确。

  • 从属性创建对象;
  • 制作 CqlSession SpyBean;
  • SessionFactory-不知道它是如何使用的,可能可以模拟它;
  • 调用“cqlSession.execute”时 Mockito.doNothing;

然后类似:

Mockito.verify(cqlSession, Mockito.times(3)).execute(Mockito.any());
© www.soinside.com 2019 - 2024. All rights reserved.