A coverage threshold is a set minimum percentage of code that must be tested to consider the test suite sufficient. It helps ensure enough code is covered by tests.
Click to reveal answer
beginner
Why use coverage thresholds in JUnit testing?
Coverage thresholds help maintain code quality by preventing code changes without enough tests. They alert developers if test coverage drops below a safe level.
Click to reveal answer
intermediate
How can you enforce coverage thresholds in a JUnit project?
You can use tools like JaCoCo with your build system (Maven or Gradle) to set coverage thresholds. The build fails if coverage is below the set percentage.
Click to reveal answer
intermediate
What types of coverage can thresholds be set for?
Thresholds can be set for line coverage, branch coverage, method coverage, and class coverage to ensure different aspects of code are tested.
Click to reveal answer
beginner
Example: What happens if line coverage threshold is set to 80% but actual coverage is 75%?
The test run or build will fail, signaling that the tests do not cover enough lines of code and more tests are needed.
Click to reveal answer
What does a coverage threshold do in testing?
ARemoves tests that fail
BAutomatically fixes uncovered code
CSets a minimum code coverage percentage required
DIncreases code complexity
✗ Incorrect
Coverage thresholds set a minimum percentage of code that must be tested to pass.
Which tool is commonly used with JUnit to enforce coverage thresholds?
AMockito
BSelenium
CJUnitPerf
DJaCoCo
✗ Incorrect
JaCoCo is a popular tool to measure and enforce code coverage in Java projects.
If your coverage threshold is 90% and actual coverage is 85%, what happens?
ABuild fails
BBuild passes
CTests are skipped
DCoverage is ignored
✗ Incorrect
The build fails because coverage is below the required threshold.
Which coverage type measures how many decision branches are tested?
ALine coverage
BBranch coverage
CMethod coverage
DClass coverage
✗ Incorrect
Branch coverage measures how many possible paths (branches) in the code are tested.
Why is setting coverage thresholds helpful?
AEnsures tests cover enough code to catch bugs
BGuarantees no bugs in code
CMakes tests run faster
DRemoves the need for manual testing
✗ Incorrect
Coverage thresholds help ensure tests cover enough code to reduce bugs.
Explain what coverage thresholds are and how they help maintain test quality in JUnit projects.
Think about how coverage thresholds prevent untested code from slipping through.
You got /4 concepts.
Describe how you would configure a coverage threshold for line coverage in a JUnit project using JaCoCo.
Consider the build configuration file and threshold settings.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of setting coverage thresholds in JUnit testing?
easy
A. To automatically fix bugs in the code
B. To speed up test execution time
C. To ensure a minimum percentage of code is tested
D. To generate user interface reports
Solution
Step 1: Understand coverage thresholds
Coverage thresholds define the minimum amount of code that must be tested to pass.
Step 2: Identify the main goal
The goal is to keep tests thorough by enforcing minimum test coverage.
Final Answer:
To ensure a minimum percentage of code is tested -> Option C
Quick Check:
Coverage thresholds = minimum tested code [OK]
Hint: Coverage thresholds set minimum tested code percentage [OK]
Common Mistakes:
Thinking thresholds speed up tests
Believing thresholds fix bugs automatically
Confusing thresholds with report generation
2. Which of the following is the correct way to set a line coverage threshold of 80% using JaCoCo in a Maven pom.xml?
easy
A. <rule><limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.8</minimum></limit></rule>
B. <rule><limit><counter>LINE</counter><value>MISSEDCOUNT</value><maximum>0.8</maximum></limit></rule>
C. <rule><limit><counter>BRANCH</counter><value>COVEREDRATIO</value><minimum>80</minimum></limit></rule>
D. <rule><limit><counter>LINE</counter><value>COVEREDCOUNT</value><minimum>0.8</minimum></limit></rule>
Solution
Step 1: Identify correct counter and value
For line coverage, the counter is LINE and the value to check coverage ratio is COVEREDRATIO.
Step 2: Check threshold value format
Minimum coverage is set as a decimal ratio (0.8 for 80%).
Final Answer:
Rule with LINE counter, COVEREDRATIO value, and minimum 0.8 -> Option A
Quick Check:
Line coverage threshold = 0.8 COVEREDRATIO [OK]
Hint: Use LINE + COVEREDRATIO + minimum 0.8 for 80% threshold [OK]
Common Mistakes:
Using MISSEDCOUNT instead of COVEREDRATIO
Setting minimum as 80 instead of 0.8
Confusing BRANCH counter with LINE
3. Given the following JaCoCo coverage report snippet:
{"LINE": {"covered": 40, "missed": 10}}
What is the line coverage ratio, and does it meet a threshold of 85%?
medium
A. Coverage is 75%, which does not meet the 85% threshold
B. Coverage is 75%, which meets the 85% threshold
C. Coverage is 80%, which meets the 85% threshold
D. Coverage is 80%, which does not meet the 85% threshold
Solution
Step 1: Calculate coverage ratio
Total lines = covered + missed = 40 + 10 = 50. Coverage ratio = 40 / 50 = 0.8 or 80%.
Step 2: Compare with threshold
Threshold is 85%, coverage is 80%, so coverage does not meet threshold.
Final Answer:
Coverage is 80%, which does not meet the 85% threshold -> Option D
Quick Check:
40/50 = 0.8 < 0.85 [OK]
Hint: Divide covered by total lines, compare to threshold [OK]
Common Mistakes:
Adding covered and missed incorrectly
Confusing coverage percentage with missed percentage
Assuming 80% meets 85% threshold
4. You set a branch coverage threshold of 90% in your JaCoCo config, but the build passes even when coverage is 85%. What is the most likely cause?
medium
A. The JaCoCo plugin is not configured to fail the build on threshold violation
B. The threshold value is set as maximum instead of minimum
C. Branch coverage cannot be enforced with JaCoCo
D. The threshold is set on LINE coverage, not BRANCH coverage
Solution
Step 1: Understand threshold enforcement
Thresholds require configuration to fail the build if coverage is below minimum.
Step 2: Identify common misconfiguration
If the build passes despite low coverage, likely the fail-on-violation setting is missing or disabled.
Final Answer:
JaCoCo plugin not configured to fail build on threshold violation -> Option A
Hint: Fail build must be enabled to enforce coverage thresholds [OK]
Common Mistakes:
Confusing LINE and BRANCH counters
Setting maximum instead of minimum threshold
Believing branch coverage can't be enforced
5. You want to enforce multiple coverage thresholds in your JUnit project using JaCoCo: 85% line coverage and 75% branch coverage. Which configuration snippet correctly enforces both thresholds?
hard
A. <rules>
<rule><limit><counter>LINE</counter><value>COVEREDCOUNT</value><minimum>85</minimum></limit></rule>
<rule><limit><counter>BRANCH</counter><value>COVEREDCOUNT</value><minimum>75</minimum></limit></rule>
</rules>
B. <rules>
<rule>
<limits>
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.85</minimum></limit>
<limit><counter>BRANCH</counter><value>COVEREDRATIO</value><minimum>0.75</minimum></limit>
</limits>
</rule>
</rules>
C. <rules>
<rule><limit><counter>LINE</counter><value>MISSEDCOUNT</value><maximum>0.15</maximum></limit></rule>
<rule><limit><counter>BRANCH</counter><value>MISSEDCOUNT</value><maximum>0.25</maximum></limit></rule>
</rules>
D. <rules>
<rule><limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.75</minimum></limit></rule>
<rule><limit><counter>BRANCH</counter><value>COVEREDRATIO</value><minimum>0.85</minimum></limit></rule>
</rules>
Solution
Step 1: Check counters and values
Use LINE and BRANCH counters with COVEREDRATIO values for coverage percentages.
Step 2: Verify minimum thresholds and structure
Minimum values must be decimals (0.85 and 0.75) inside a single rule with multiple limits.
Final Answer:
Rules with LINE and BRANCH counters, COVEREDRATIO values, minimum 0.85 and 0.75 -> Option B
Quick Check:
Multiple limits in one rule with correct decimals [OK]
Hint: Use multiple limits inside one rule with decimals for thresholds [OK]
Common Mistakes:
Using COVEREDCOUNT with integer minimums instead of decimals
Swapping threshold values between LINE and BRANCH
Splitting limits into separate rules incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.