Java 中 Lambda 表达式的单元覆盖率

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

我正在尝试涵盖看起来像这样的方法

  protected SessionBuilderConfigurer getSessionBuilderConfigurer() {
    return cqlSessionBuilder -> {
        ProgrammaticDriverConfigLoaderBuilder programmaticDriverConfigLoaderBuilder;
   
        programmaticDriverConfigLoaderBuilder = getCassandraWithoutSslConfiguration();//Local method

        DriverConfigLoader driverConfigLoader = programmaticDriverConfigLoaderBuilder.build();
        return cqlSessionBuilder
            .withConfigLoader(driverConfigLoader)
            .withAuthCredentials(properties.getUsername(), properties.getPassword());
    };
  }

JUnit 根本没有涵盖这一点。

J单位:


//Class level
@ExtendWith(MockitoExtension.class)

@InjectMocks WaausCassandraConfiguration configuration;


//Inside method
Assertions.assertNotNull(configuration.getSessionBuilderConfigurer());
java unit-testing junit junit5
1个回答
0
投票

getSessionBuilderConfigurer()
使用 lambda 创建一个
SessionBuilderConfigurer
对象,是某种方法的实现(可能是
SessionBuilderConfigurer.configure()
)。

如果你想执行 lambda 中的代码,你需要执行该方法:

CqlSessionBuilder sessionBuilder = mock(CqlSessionBuilder.class);
// the following line create the SessionBuilderConfigurer
SessionBuilderConfigurer configurer = configuration.getSessionBuilderConfigurer();
// the following line calls the lambda
configurer.configure(sessionBuilder);

// now you need to assert that the correct methods on the sessionBuilder have been called
© www.soinside.com 2019 - 2024. All rights reserved.