Bird
Raised Fist0
JUnittesting~5 mins

@EnumSource for enum values in JUnit - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the @EnumSource annotation in JUnit?

@EnumSource is used to run a parameterized test with all or some values of an enum. It helps test methods with enum inputs easily.

Click to reveal answer
beginner
How do you specify which enum to use with @EnumSource?
<p>You provide the enum class as a parameter, like <code>@EnumSource(MyEnum.class)</code>. This tells JUnit to use all values of <code>MyEnum</code> for the test.</p>
Click to reveal answer
intermediate
How can you run a test with only specific enum values using @EnumSource?

Use the names attribute to list enum constants you want, e.g., @EnumSource(value = MyEnum.class, names = {"VALUE1", "VALUE2"}).

Click to reveal answer
intermediate
What happens if you use @EnumSource without specifying an enum class?
<p>JUnit expects the parameter type of the test method to be an enum. It uses that enum class automatically.</p>
Click to reveal answer
beginner
Write a simple example of a JUnit test method using @EnumSource to test all values of an enum Day.
enum Day { MONDAY, TUESDAY, WEDNESDAY }

@ParameterizedTest
@EnumSource(Day.class)
void testDayEnum(Day day) {
    assertNotNull(day);
}
Click to reveal answer
What does @EnumSource(MyEnum.class) do in a JUnit test?
ARuns the test with all enum values except the first
BRuns the test once for each value in MyEnum
CRuns the test only once with the first enum value
DRuns the test with no enum values
How do you run a test with only specific enum values using @EnumSource?
AUse the <code>names</code> attribute with the enum constants you want
BUse <code>excludeNames</code> attribute
CUse <code>value</code> attribute with a list of values
DYou cannot filter enum values with <code>@EnumSource</code>
If the test method parameter type is an enum, can you omit the enum class in @EnumSource?
AOnly if the enum is public
BNo, you must always specify the enum class
CYes, JUnit infers the enum class from the parameter type
DOnly if the enum has less than 5 values
What type of test is @EnumSource mainly used with?
AUnit tests without parameters
BPerformance tests
CIntegration tests
DParameterized tests
Which of these is a valid way to use @EnumSource?
A@EnumSource(value = Status.class, names = {"ACTIVE", "INACTIVE"})
B@EnumSource(Status.ACTIVE, Status.INACTIVE)
C@EnumSource(Status)
D@EnumSource(names = Status.class)
Explain how @EnumSource works in JUnit parameterized tests and how you can select specific enum values.
Think about how JUnit uses enum values to run tests multiple times.
You got /4 concepts.
    Describe a simple example of a JUnit test method using @EnumSource with an enum parameter.
    Imagine testing all days of the week using an enum.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      What is the main purpose of using @EnumSource in JUnit tests?

      easy
      A. To convert enum values to strings
      B. To create a new enum type inside the test class
      C. To skip tests for enum values
      D. To run the test method once for each value of an enum automatically

      Solution

      1. Step 1: Understand the role of @EnumSource

        @EnumSource is an annotation in JUnit that provides enum values as parameters to a test method.
      2. Step 2: Identify what it does in tests

        It runs the test method once for each enum constant, so all enum values are tested automatically.
      3. Final Answer:

        To run the test method once for each value of an enum automatically -> Option D
      4. Quick Check:

        @EnumSource runs tests per enum value = D [OK]
      Hint: Remember: @EnumSource runs tests for every enum value [OK]
      Common Mistakes:
      • Thinking @EnumSource creates enums
      • Believing it skips enum values
      • Confusing it with string conversion
      2.

      Which of the following is the correct syntax to use @EnumSource for an enum named Status in a JUnit 5 parameterized test?

      @ParameterizedTest
      @EnumSource(??? )
      void testStatus(Status status) { ... }
      easy
      A. @EnumSource(Status.class)
      B. @EnumSource("Status")
      C. @EnumSource(Status)
      D. @EnumSource(enum = Status)

      Solution

      1. Step 1: Recall correct @EnumSource syntax

        The annotation requires the enum class name with .class, like Status.class.
      2. Step 2: Check each option

        @EnumSource(Status.class) uses Status.class which is correct syntax. Others are invalid Java or annotation syntax.
      3. Final Answer:

        @EnumSource(Status.class) -> Option A
      4. Quick Check:

        Use enum class with .class in @EnumSource = A [OK]
      Hint: Use EnumName.class inside @EnumSource parentheses [OK]
      Common Mistakes:
      • Omitting .class after enum name
      • Using string instead of class reference
      • Adding invalid parameters
      3.

      Given the enum Color { RED, GREEN, BLUE } and the test:

      @ParameterizedTest
      @EnumSource(Color.class)
      void testColor(Color color) {
          System.out.println(color);
      }

      What will be the output when this test runs?

      medium
      A. BLUE GREEN RED
      B. RED GREEN
      C. RED GREEN BLUE
      D. No output, test fails

      Solution

      1. Step 1: Understand @EnumSource behavior

        @EnumSource runs the test once for each enum constant in the order declared.
      2. Step 2: Identify output from System.out.println

        Each test run prints the enum value. So output lines are RED, then GREEN, then BLUE.
      3. Final Answer:

        RED GREEN BLUE -> Option C
      4. Quick Check:

        Test runs once per enum value in order = C [OK]
      Hint: Test runs once per enum value in declared order [OK]
      Common Mistakes:
      • Assuming only some enum values run
      • Thinking output order is random
      • Expecting test failure without reason
      4.

      Consider this test code snippet:

      @ParameterizedTest
      @EnumSource(Status.class)
      void testStatus(String status) {
          assertNotNull(status);
      }

      What is the main problem here?

      medium
      A. The test method parameter type does not match the enum type
      B. @EnumSource cannot be used with Status enum
      C. assertNotNull is not a valid assertion
      D. The test method must be static

      Solution

      1. Step 1: Check parameter type vs enum type

        @EnumSource(Status.class) passes enum constants of type Status, but method expects String parameter.
      2. Step 2: Understand type mismatch impact

        This causes a runtime error because JUnit cannot convert Status enum to String automatically.
      3. Final Answer:

        The test method parameter type does not match the enum type -> Option A
      4. Quick Check:

        Parameter type must match enum type = A [OK]
      Hint: Method parameter type must be the enum type used in @EnumSource [OK]
      Common Mistakes:
      • Using String instead of enum type as parameter
      • Thinking @EnumSource only works with strings
      • Assuming test method must be static
      5.

      You want to test only specific enum values OPEN and CLOSED from the enum TicketStatus { OPEN, IN_PROGRESS, CLOSED, REOPENED } using @EnumSource. Which is the correct way to do this?

      hard
      A. @EnumSource(TicketStatus.class, include = {OPEN, CLOSED})
      B. @EnumSource(value = TicketStatus.class, names = {"OPEN", "CLOSED"})
      C. @EnumSource(TicketStatus.class, only = {"OPEN", "CLOSED"})
      D. @EnumSource(TicketStatus.class, filter = {OPEN, CLOSED})

      Solution

      1. Step 1: Recall how to filter enum values in @EnumSource

        @EnumSource supports a 'names' attribute to specify which enum constants to include.
      2. Step 2: Check each option's syntax

        @EnumSource(value = TicketStatus.class, names = {"OPEN", "CLOSED"}) uses 'names' with string array correctly. Others use invalid or unsupported attributes.
      3. Final Answer:

        @EnumSource(value = TicketStatus.class, names = {"OPEN", "CLOSED"}) -> Option B
      4. Quick Check:

        Use 'names' to select enum values in @EnumSource = B [OK]
      Hint: Use 'names' attribute with enum strings to filter values [OK]
      Common Mistakes:
      • Using unsupported attributes like include or only
      • Passing enum constants instead of strings in names
      • Forgetting to specify value = Enum.class
      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