Improve code coverage with JaCoCo
โค้ดเก่ามีอยู่มานานแล้ว อยากเพิ่ม code coverage จะเริ่มจากตรงไหน การทำงานกับโค้ดเดิมที่มีอยู่แล้วนั้นไม่ง่ายเท่าไหร่ แล้วเราอยากจะเพิ่ม code coverage ให้กับโปรเจค Java ของเรานั้นจะเริ่มต้นอย่างไรบ้าง
Set the target
เราต้องตั้งเป้าหมายให้แน่ใจว่า เราต้องการจะมี Code coverage อยู่ที่เท่าไหร่ ยกตัวอย่าง อยากได้ code coverage อยู่ที่ 80% ก็ตั้งเป็นเป้าหมายเอาไว้
สำหรับเป้าหมาย 80% นั้นทำได้ยากพอสมควรสำหรับ legacy code แต่ก็ไม่ได้แปลว่าทำไม่ได้
Setup the Tool
สำหรับ Java เราจะใช้ JaCoCo – Java Code Coverage Library ซึ่งเราจะนำมาใช้ออก report ของ code coverage ในโปรเจคของเรา แอดเข้าไปใน pom.xml ตามด้านล่าง โดยเมื่อรัน verify ตัว Jacoco จะออก report มาให้ /target/jacoco.exec
และเราเข้าไปดู report แบบ html ได้ที่ target/site/jacoco/index.html
เราก็สามารถรู้ได้แล้วว่าตอนนี้โปรเจคเรามี Code coverage อยู่กี่เปอร์เซน ตัวไหนเท่าไหร่ อย่างไร เท่านี้เราก็สามารถรู้ได้ว่าควรจะเพิ่ม code coverage ที่จุดใด
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>report</id>
<goals>
<goal>report-aggregate</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
แถม
สำหรับ IntelliJ IDEA สามารถรัน Test Code Coverage ได้โดย Right Click on the module –> More Run/Debug –> Run ‘All Tests’ with Coverage
Sonarlint Plugin สำหรับดู code quality บอก code smell, duplicate, และบอกคำแนะนำต่างๆ (ต้องลงเพิ่ม ฟรี)