首页 > 解决方案 > 如何通过 Sonarqube 异常测试覆盖率

问题描述

我正在通过 JUnit 测试,但 Sonarqube 不断通知我,我的测试未涵盖我的方法。

这是我的测试方法:

@Test(expected = DataNotFoundException.class)
public void testNullApplicationData() {
    appFilter.setApplicationId(null);
    appFilter.setPolicyNumber(null);

    Mockito.when(impl.getApplication(appFilter, null)).thenThrow(DataNotFoundException.class);
    assertNotEquals(null, impl.getApplication(appFilter, null));
}

这是我正在测试的方法:

@Override
public ApplicationData getApplication(ApplicationFilter filter, String systemId) {
    try {
        ApplicationData appData = retrieveAppData(filter, systemId);
        if (Objects.isNull(appData)) {
            throw new DataNotFoundException(
                    StringUtils.join("Application ", ApplicationUtil.getApplicationFilterId(filter), " not found"));
        }

        return retrieveAppData(filter, systemId);
    } catch (DataAccessException ex) {
        throw new DataException(
                StringUtils.join("Error retrieving application ", ApplicationUtil.getApplicationFilterId(filter)));
    }
}

一些注意事项:
我确信该retrieveAppData(filter, systemId)方法将返回一个null结果,这将确保DataNotFoundException将被触发

我还没有为此编写测试方法,DataAccessException因为我试图首先弄清楚如何在 Sonarqube 中传递第一个异常

以下是我在构建项目时使用的命令:
mvn clean install
mvn clean package sonar:sonar

标签: javajunitsonarqubemockito

解决方案


推荐阅读