2

I am getting 97.9 % code coverage in sonarcloude and i want to make it 100%. Error is showing that my SpringProjectMainApplication.java is not covered by the test.

Main Class is :

**@SpringBootApplication
public class SpringProjectMainApplication {
    @Generated(value = { "" })
    public static void main(String... args) {
            SpringApplication.run(SpringProjectMainApplication.class, args);
        }
    }**

Test class is

**@SpringBootTest
public class SpringProjectApplicationTests {
    @Test
    public void contextLoads() {
       }
}**

Sonarcloude error is :

Sonarcloude Sonarcloude error

My Pom file has following configuration:

</sonar.sources>
        <sonar.issue.ignore.multicriteria>e11, e12</sonar.issue.ignore.multicriteria>
        <!-- Disable rule for "Add at least one assertion for the contextLoads 
            test case" -->
        <sonar.issue.ignore.multicriteria.e11.ruleKey>squid:S2699</sonar.issue.ignore.multicriteria.e11.ruleKey>
        <sonar.issue.ignore.multicriteria.e11.resourceKey>**/SpringProjectApplicationTests.java</sonar.issue.ignore.multicriteria.e11.resourceKey>
        <!-- Disable rule for if cases in methods equals -->
        <sonar.issue.ignore.multicriteria.e12.ruleKey>squid:S3776</sonar.issue.ignore.multicriteria.e12.ruleKey>
        <sonar.issue.ignore.multicriteria.e12.resourceKey>**/model/**</sonar.issue.ignore.multicriteria.e12.resourceKey>
         <sonar.issue.ignore.multicriteria.e13.resourceKey>**/SpringProjectApplicationTests.java</sonar.issue.ignore.multicriteria.e13.resourceKey>
         <sonar.issue.ignore.multicriteria.e13.resourceKey>**/SpringProjectMainApplication.java</sonar.issue.ignore.multicriteria.e13.resourceKey>
         <skip.unit-tests>false</skip.unit-tests>
        <skipITs>false</skipITs>
        </properties>


<groupId>org.sonarsource.scanner.maven</groupId>
                            <artifactId>sonar-maven-plugin</artifactId>
                            <version>3.6.0.1398</version>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>0.8.4</version>
                        <configuration>
                            <excludes>
                                <exclude>**/model/**</exclude>
                                <exclude>**/SpringProjectApplication.*</exclude>
                                <exclude>**/config/**</exclude>
                                <exclude>
  **/src/it/java/SpringProjectApplicationTests.java
                                 </exclude>
                            </excludes>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <!-- binds by default to the phase "initialize" -->
                                    <goal>prepare-agent</goal>
                                    <!-- binds by default to the phase "verify" -->
                                    <goal>report</goal>
  • 1
    Honest Question: What are you really testing in this case? – khmarbaise Jun 27 '20 at 11:32
  • I am testing my Spring boot application , Junit test. I have put various test in my application. I need to exclude my test from main class. I have excluded in pom. But still it is showing error – Joseph George Jun 27 '20 at 11:35
  • No you are testing Spring boot in that way. If you like to test that your spring boot app will start correctly you could do that via docker (testcontainers) easier and better. But that will not appear in Sonar and making your coverage to get 100%... – khmarbaise Jun 27 '20 at 16:56
  • Aiming for 100% test coverage might be a lofty goals, but attaining it all cost is wasting time and money. Some code really does not need to be tested (for example testing trivial getters and setters is usually a waste of time), and consider if your time would be better spent on other thing. – Mark Rotteveel Jun 28 '20 at 16:38

1 Answers1

1

It looks like a typo in your configuration. It should be 'SpringProjectMainApplication' instead of 'SpringProjectApplication'.

<excludes>
    ....
    <exclude>**/SpringProjectMainApplication.class</exclude>
    ....
</excludes>
Abhinaba Chakraborty
  • 3,488
  • 2
  • 16
  • 37