Bird
Raised Fist0
JUnittesting~10 mins

@EnabledOnJre for JRE-specific tests in JUnit - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to enable the test only on Java 17.

JUnit
@EnabledOnJre({JRE.[1])
void testFeature() {
    // test code here
}
Drag options to blanks, or click blank then click option'
AJAVA_11
BJAVA_17
CJAVA_8
DJAVA_19
Attempts:
3 left
💡 Hint
Common Mistakes
Using a Java version constant that does not match the intended JRE version.
Forgetting to import the JRE enum.
2fill in blank
medium

Complete the code to enable the test only on Java 11 and Java 17.

JUnit
@EnabledOnJre({JRE.JAVA_11, JRE.[1])
void testMultipleVersions() {
    // test code here
}
Drag options to blanks, or click blank then click option'
AJAVA_8
BJAVA_19
CJAVA_15
DJAVA_17
Attempts:
3 left
💡 Hint
Common Mistakes
Using a version not supported or not intended for the test.
Syntax errors in the array of JRE versions.
3fill in blank
hard

Fix the error in the annotation to correctly enable the test on Java 8.

JUnit
@EnabledOnJre(JRE.[1])
void testLegacySupport() {
    // test code here
}
Drag options to blanks, or click blank then click option'
AJAVA8
BJAVA-8
CJAVA_8
DJAVA8_
Attempts:
3 left
💡 Hint
Common Mistakes
Using JAVA8 without underscore causes a compile error.
Using hyphens or trailing underscores is invalid.
4fill in blank
hard

Fill both blanks to enable the test only on Java 15 or Java 19.

JUnit
@EnabledOnJre({JRE.[1], JRE.[2])
void testFutureVersions() {
    // test code here
}
Drag options to blanks, or click blank then click option'
AJAVA_15
BJAVA_11
CJAVA_19
DJAVA_8
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing older versions like Java 8 or 11 when the test targets newer versions.
Syntax errors in the array notation.
5fill in blank
hard

Fill all three blanks to enable the test on Java 8, Java 11, and Java 17.

JUnit
@EnabledOnJre({JRE.[1], JRE.[2], JRE.[3])
void testMultipleLTS() {
    // test code here
}
Drag options to blanks, or click blank then click option'
AJAVA_8
BJAVA_11
CJAVA_17
DJAVA_19
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to close the array with a closing brace.
Using incorrect enum constants or missing commas.

Practice

(1/5)
1. What is the main purpose of the @EnabledOnJre annotation in JUnit?
easy
A. To run a test only on specified Java Runtime Environment versions
B. To disable a test permanently
C. To run a test on all Java versions except specified ones
D. To enable tests only on the latest Java version

Solution

  1. Step 1: Understand the annotation purpose

    <code>@EnabledOnJre
  2. Step 2: Match purpose with options

    To run a test only on specified Java Runtime Environment versions correctly states it runs tests only on specified JRE versions, while others describe different behaviors.
  3. Final Answer:

    To run a test only on specified Java Runtime Environment versions -> Option A
  4. Quick Check:

    @EnabledOnJre = run test on chosen JRE versions [OK]
Hint: Think: runs tests only on chosen Java versions [OK]
Common Mistakes:
  • Confusing @EnabledOnJre with disabling tests
  • Assuming it runs tests on all versions except specified
  • Thinking it only enables tests on the latest Java version
2. Which of the following is the correct syntax to enable a test only on Java 17 using @EnabledOnJre?
easy
A. @EnabledOnJre(javaVersion = "17")
B. @EnabledOnJre(version = 17)
C. @EnabledOnJre(JRE.JAVA_17)
D. @EnabledOnJre(value = "JAVA_17")

Solution

  1. Step 1: Recall correct annotation usage

    The correct syntax uses the enum constant from JRE, like @EnabledOnJre(JRE.JAVA_17).
  2. Step 2: Compare options

    Only @EnabledOnJre(JRE.JAVA_17) uses the correct enum constant syntax. Others use invalid or incorrect attribute names or formats.
  3. Final Answer:

    @EnabledOnJre(JRE.JAVA_17) -> Option C
  4. Quick Check:

    Use enum JRE.JAVA_17 inside @EnabledOnJre [OK]
Hint: Use enum JRE.JAVA_17 inside parentheses [OK]
Common Mistakes:
  • Using string values instead of enum constants
  • Using incorrect attribute names like version or javaVersion
  • Missing the enum prefix JRE.
3. Given the test annotated with @EnabledOnJre({JRE.JAVA_11, JRE.JAVA_17}), what happens when running on Java 15?
medium
A. The test runs normally
B. The test is skipped
C. The test fails with an error
D. The test runs but logs a warning

Solution

  1. Step 1: Understand the annotation behavior

    The test runs only on Java 11 or Java 17 as specified.
  2. Step 2: Check Java 15 behavior

    Since Java 15 is not in the list, the test is skipped automatically.
  3. Final Answer:

    The test is skipped -> Option B
  4. Quick Check:

    Test runs only on specified JREs, else skipped [OK]
Hint: Test runs only on listed JREs; others skip [OK]
Common Mistakes:
  • Assuming test runs on any Java version
  • Expecting test to fail instead of skip
  • Thinking test logs a warning when skipped
4. Identify the error in this test annotation: @EnabledOnJre(JRE.JAVA_8, JRE.JAVA_11)
medium
A. JRE.JAVA_8 is not a valid enum constant
B. The annotation cannot be used with more than one JRE
C. The annotation requires a string, not enum constants
D. Multiple JREs must be inside curly braces {}

Solution

  1. Step 1: Check annotation syntax for multiple JREs

    When specifying multiple JREs, they must be enclosed in curly braces as an array.
  2. Step 2: Analyze given annotation

    The annotation uses parentheses with multiple enum constants without braces, which is invalid syntax.
  3. Final Answer:

    Multiple JREs must be inside curly braces {} -> Option D
  4. Quick Check:

    Multiple JREs need braces: {@code @EnabledOnJre({JRE.JAVA_8, JRE.JAVA_11})} [OK]
Hint: Use curly braces for multiple JREs inside @EnabledOnJre [OK]
Common Mistakes:
  • Omitting curly braces for multiple JREs
  • Using strings instead of enum constants
  • Thinking multiple JREs are not allowed
5. You want to write a test that runs only on Java 8, 11, and 17, but skips on all other versions. Which is the correct way to annotate the test?
hard
A. @EnabledOnJre({JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_17})
B. @EnabledOnJre(JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_17)
C. @EnabledOnJre(value = {"JAVA_8", "JAVA_11", "JAVA_17"})
D. @EnabledOnJre(versions = {JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_17})

Solution

  1. Step 1: Recall correct syntax for multiple JREs

    Multiple JREs must be passed as an array inside curly braces using enum constants.
  2. Step 2: Evaluate options

    @EnabledOnJre({JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_17}) correctly uses @EnabledOnJre({JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_17}). @EnabledOnJre(JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_17) misses braces, C uses strings instead of enums, D uses a wrong attribute name.
  3. Final Answer:

    @EnabledOnJre({JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_17}) -> Option A
  4. Quick Check:

    Use enum array with braces for multiple JREs [OK]
Hint: Use enum array with braces for multiple JREs [OK]
Common Mistakes:
  • Missing curly braces for multiple JREs
  • Using strings instead of enum constants
  • Using incorrect attribute names like versions or value
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard