Bird
Raised Fist0
JUnittesting~5 mins

@Tag for categorization in JUnit - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the @Tag annotation in JUnit?
The @Tag annotation is used to categorize tests in JUnit. It helps group tests so you can run or exclude specific categories easily.
Click to reveal answer
intermediate
How do you apply multiple tags to a single test method in JUnit?
You apply multiple @Tag annotations by adding them above the test method, each with a different tag name. For example:
@Tag("fast")
@Tag("database")
void testMethod() { ... }
Click to reveal answer
beginner
True or False: @Tag annotations can be used on test classes as well as test methods.
True. You can put <code>@Tag</code> on a test class to tag all tests inside it, or on individual test methods for more specific categorization.
Click to reveal answer
intermediate
How can you run only tests with a specific tag using JUnit?
You configure your test runner or build tool (like Maven or Gradle) to include only tests with a specific @Tag. For example, in Maven Surefire plugin, you can specify -Dgroups=fast to run tests tagged with @Tag("fast").
Click to reveal answer
beginner
What is a practical example of using @Tag in a real project?
You might tag tests as @Tag("integration") for slow tests that hit a database, and @Tag("unit") for fast, isolated tests. This way, you can run only unit tests during development for speed, and run integration tests separately.
Click to reveal answer
What does the @Tag annotation do in JUnit?
AMarks a test as ignored
BDefines the order of test execution
CCategorizes tests for selective execution
DSpecifies the test timeout
Can you apply multiple @Tag annotations to a single test method?
ANo, tags must be applied at class level only
BNo, only one tag is allowed
CYes, but only if tags are comma-separated in one annotation
DYes, by adding multiple <code>@Tag</code> annotations
Where can @Tag annotations be placed?
AOnly on test methods
BOn both test classes and test methods
COnly on the test suite
DOnly on test classes
How do you run tests with a specific tag using Maven?
AUse <code>-Dgroups=tagName</code>
BUse <code>-Dtest=tagName</code>
CUse <code>-Dtags=tagName</code>
DUse <code>-DincludeTags=tagName</code>
Why is tagging tests useful in a project?
ATo speed up test runs by selecting relevant tests
BTo automatically fix failing tests
CTo generate test data
DTo encrypt test results
Explain how you would use @Tag annotations to organize tests in a JUnit project.
Think about grouping tests for easier execution control.
You got /4 concepts.
    Describe the steps to run only tests with a specific tag using a build tool like Maven.
    Focus on how tagging connects with test execution commands.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the @Tag annotation in JUnit?
      easy
      A. To mark tests as deprecated
      B. To define the order in which tests run
      C. To group tests for easier selection and filtering
      D. To specify the timeout for a test

      Solution

      1. Step 1: Understand the role of @Tag

        @Tag is used to label tests with categories or groups.
      2. Step 2: Identify the purpose of grouping

        Grouping helps to select or exclude tests easily during test runs.
      3. Final Answer:

        To group tests for easier selection and filtering -> Option C
      4. Quick Check:

        @Tag groups tests = A [OK]
      Hint: Tags group tests to run or skip categories fast [OK]
      Common Mistakes:
      • Confusing @Tag with test execution order
      • Thinking @Tag sets test timeouts
      • Assuming @Tag marks tests deprecated
      2. Which of the following is the correct syntax to tag a test method with the tag "fast" in JUnit 5?
      easy
      A. @Tag["fast"] public void testMethod() {}
      B. @Tag("fast") public void testMethod() {}
      C. @Tag{fast} public void testMethod() {}
      D. @Tag:fast public void testMethod() {}

      Solution

      1. Step 1: Recall correct annotation syntax

        Annotations use parentheses with string literals for parameters, e.g., @Tag("fast").
      2. Step 2: Check each option's syntax

        Only @Tag("fast") public void testMethod() {} uses correct parentheses and quotes syntax.
      3. Final Answer:

        @Tag("fast") public void testMethod() {} -> Option B
      4. Quick Check:

        Annotation syntax = parentheses + quotes [OK]
      Hint: Use parentheses and quotes for annotation parameters [OK]
      Common Mistakes:
      • Using square brackets instead of parentheses
      • Omitting quotes around tag name
      • Using curly braces or colons incorrectly
      3. Given the following test class, which tests will run if you execute tests with the tag "integration"?
      @Tag("integration")
      class DatabaseTests {
        @Test void testConnection() {}
        @Test @Tag("slow") void testQueryPerformance() {}
      }
      
      @Tag("unit")
      class ServiceTests {
        @Test void testServiceLogic() {}
      }
      medium
      A. All three tests
      B. Only testQueryPerformance()
      C. Only testServiceLogic()
      D. Both testConnection() and testQueryPerformance()

      Solution

      1. Step 1: Understand class-level and method-level tags

        Class DatabaseTests is tagged "integration", so all its tests inherit this tag unless excluded.
      2. Step 2: Check method tags inside DatabaseTests

        testConnection() inherits "integration" tag; testQueryPerformance() has both "integration" (from class) and "slow" tags.
      3. Step 3: Check ServiceTests tags

        ServiceTests is tagged "unit", so its tests do not run when filtering by "integration".
      4. Final Answer:

        Both testConnection() and testQueryPerformance() -> Option D
      5. Quick Check:

        Class tag applies to all methods unless excluded [OK]
      Hint: Class tags apply to all methods inside by default [OK]
      Common Mistakes:
      • Ignoring class-level tags on methods
      • Assuming method tags override class tags completely
      • Running tests with unrelated tags
      4. You wrote the following test method but it does not run when you filter tests by the tag "fast". What is the likely problem?
      @Test
      @Tag(fast)
      void quickTest() {}
      medium
      A. Missing quotes around the tag name "fast"
      B. The @Test annotation must come after @Tag
      C. The method name must start with 'test'
      D. The tag name "fast" is not allowed in JUnit

      Solution

      1. Step 1: Check syntax of @Tag annotation

        Tag names must be string literals in quotes, e.g., @Tag("fast").
      2. Step 2: Identify the error in the code

        Here, fast is unquoted, so it is treated as an undefined variable, causing the tag to be ignored.
      3. Final Answer:

        Missing quotes around the tag name "fast" -> Option A
      4. Quick Check:

        Tag names need quotes [OK]
      Hint: Always put tag names inside quotes [OK]
      Common Mistakes:
      • Forgetting quotes around tag strings
      • Thinking annotation order matters here
      • Assuming method name affects tag filtering
      5. You want to run only tests tagged as "fast" but exclude those also tagged "database". Which JUnit 5 command line option correctly achieves this?
      hard
      A. --include-tag fast --exclude-tag database
      B. --tags fast,database
      C. --include-tag database --exclude-tag fast
      D. --tags fast --exclude-tags database

      Solution

      1. Step 1: Understand tag filtering options

        JUnit 5 supports including and excluding tags separately with --include-tag and --exclude-tag options.
      2. Step 2: Analyze each option

        --include-tag fast --exclude-tag database includes tests tagged "fast" but excludes those tagged "database", matching the requirement.
      3. Step 3: Identify incorrect syntax in other options

        Options B and D misuse --tags or --exclude-tags flags; --include-tag database --exclude-tag fast reverses include/exclude logic.
      4. Final Answer:

        --include-tag fast --exclude-tag database -> Option A
      5. Quick Check:

        Include and exclude tags use separate options [OK]
      Hint: Use separate include and exclude tag options [OK]
      Common Mistakes:
      • Combining tags with commas in --tags option
      • Using wrong flag names like --exclude-tags
      • Reversing include and exclude logic
      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