Bird
Raised Fist0
JUnittesting~10 mins

Parallel test configuration 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 parallel execution of tests in JUnit 5.

JUnit
@Execution(ExecutionMode.[1])
public class MyTests {
    @Test
    void testOne() {
        // test code
    }
}
Drag options to blanks, or click blank then click option'
APARALLEL
BSAME_THREAD
CSEQUENTIAL
DCONCURRENT
Attempts:
3 left
💡 Hint
Common Mistakes
Using SAME_THREAD runs tests one after another, not in parallel.
PARALLEL is not a valid ExecutionMode enum value.
2fill in blank
medium

Complete the code to configure the JUnit Platform to run tests in parallel using a properties file.

JUnit
junit.jupiter.execution.parallel.enabled = [1]
Drag options to blanks, or click blank then click option'
Atrue
Bfalse
Cmaybe
Dauto
Attempts:
3 left
💡 Hint
Common Mistakes
Setting the value to false disables parallel execution.
Using invalid values like 'maybe' or 'auto' causes configuration errors.
3fill in blank
hard

Fix the error in the annotation to correctly set the execution mode for parallel tests.

JUnit
@Execution(ExecutionMode.[1])
public class SampleTest {
    @Test
    void example() {
        // test code
    }
}
Drag options to blanks, or click blank then click option'
ASEQUENTIAL
BCONCURRENT
CSYNCHRONIZED
DPARALLEL
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'PARALLEL' causes a compilation error because it is not defined.
Using 'SYNCHRONIZED' or 'SEQUENTIAL' runs tests one by one.
4fill in blank
hard

Fill both blanks to configure parallel execution mode and set the default parallelism in junit-platform.properties.

JUnit
junit.jupiter.execution.parallel.mode.default = [1]
junit.jupiter.execution.parallel.config.strategy = [2]
Drag options to blanks, or click blank then click option'
Aconcurrent
Bfixed
Csequential
Ddynamic
Attempts:
3 left
💡 Hint
Common Mistakes
Setting mode to 'sequential' disables parallelism.
Using 'dynamic' strategy changes thread count at runtime, not fixed.
5fill in blank
hard

Fill all three blanks to create a JUnit 5 test class that runs tests in parallel and uses a custom thread pool size.

JUnit
@Execution(ExecutionMode.[1])
public class ParallelTests {
    @Test
    void testA() {
        // test code
    }
}

// In junit-platform.properties:
junit.jupiter.execution.parallel.enabled = [2]
junit.jupiter.execution.parallel.config.fixed.parallelism = [3]
Drag options to blanks, or click blank then click option'
ACONCURRENT
Btrue
C4
Dfalse
Attempts:
3 left
💡 Hint
Common Mistakes
Setting parallel.enabled to false disables parallel tests.
Using SEQUENTIAL mode runs tests one by one.

Practice

(1/5)
1. What is the main purpose of configuring parallel test execution in JUnit?
easy
A. To disable all tests temporarily
B. To run tests one after another in a fixed order
C. To run multiple tests at the same time and save testing time
D. To automatically fix failing tests

Solution

  1. Step 1: Understand parallel test execution

    Parallel test execution means running tests simultaneously instead of one by one.
  2. Step 2: Identify the benefit

    Running tests at the same time saves overall testing time.
  3. Final Answer:

    To run multiple tests at the same time and save testing time -> Option C
  4. Quick Check:

    Parallel tests = faster testing [OK]
Hint: Parallel tests run simultaneously to save time [OK]
Common Mistakes:
  • Thinking parallel means disabling tests
  • Confusing parallel with sequential execution
  • Assuming parallel fixes test failures
2. Which annotation enables parallel execution of tests in JUnit 5?
easy
A. @Execution(ExecutionMode.CONCURRENT)
B. @RunWith(ParallelRunner.class)
C. @ParallelTest
D. @ConcurrentExecution

Solution

  1. Step 1: Recall JUnit 5 parallel test annotation

    JUnit 5 uses @Execution with ExecutionMode.CONCURRENT to run tests in parallel.
  2. Step 2: Check other options

    @RunWith is from JUnit 4, and @ParallelTest or @ConcurrentExecution do not exist in JUnit 5.
  3. Final Answer:

    @Execution(ExecutionMode.CONCURRENT) -> Option A
  4. Quick Check:

    @Execution(CONCURRENT) enables parallel tests [OK]
Hint: Use @Execution(ExecutionMode.CONCURRENT) for parallel tests [OK]
Common Mistakes:
  • Using JUnit 4 annotations in JUnit 5
  • Assuming @ParallelTest exists
  • Confusing annotation names
3. Given the following JUnit 5 test class, what will be the output when tests run with @Execution(ExecutionMode.CONCURRENT)?
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@Execution(ExecutionMode.CONCURRENT)
public class SampleTest {

    @Test
    void testA() throws InterruptedException {
        Thread.sleep(100);
        System.out.println("Test A completed");
    }

    @Test
    void testB() {
        System.out.println("Test B completed");
    }
}
medium
A. Test A completed Test B completed (always in this order)
B. Test B completed Test A completed (order may vary due to concurrency)
C. Compilation error due to @Execution usage
D. Tests run sequentially ignoring @Execution

Solution

  1. Step 1: Understand @Execution(ExecutionMode.CONCURRENT)

    This annotation runs tests in parallel, so testA and testB start at the same time.
  2. Step 2: Analyze test behavior

    testA sleeps 100ms before printing, testB prints immediately. So testB likely prints first, but order can vary.
  3. Final Answer:

    Test B completed Test A completed (order may vary due to concurrency) -> Option B
  4. Quick Check:

    Parallel tests print order varies [OK]
Hint: Sleep delays show concurrency by changing print order [OK]
Common Mistakes:
  • Assuming tests run sequentially despite @Execution
  • Expecting fixed print order
  • Thinking @Execution causes compile errors
4. You configured @Execution(ExecutionMode.CONCURRENT) but tests fail intermittently due to shared data. What is the best fix?
medium
A. Make tests independent by avoiding shared mutable state
B. Remove @Execution and run tests sequentially
C. Add Thread.sleep() to all tests
D. Use @Disabled on all tests

Solution

  1. Step 1: Identify cause of intermittent failures

    Shared mutable data causes race conditions when tests run in parallel.
  2. Step 2: Apply best practice for parallel tests

    Tests must be independent and avoid shared mutable state to run safely in parallel.
  3. Final Answer:

    Make tests independent by avoiding shared mutable state -> Option A
  4. Quick Check:

    Independent tests avoid parallel conflicts [OK]
Hint: Avoid shared data for stable parallel tests [OK]
Common Mistakes:
  • Just removing parallel execution instead of fixing tests
  • Adding sleeps does not fix race conditions
  • Disabling tests hides the problem
5. You want to run tests in parallel but only within each test class, not across classes. Which configuration achieves this in JUnit 5?
hard
A. Annotate test classes with @Execution(ExecutionMode.SAME_THREAD)
B. Use @Execution(ExecutionMode.CONCURRENT) on each test method only
C. Set junit.jupiter.execution.parallel.enabled to false
D. Set junit.jupiter.execution.parallel.mode.default to concurrent and junit.jupiter.execution.parallel.mode.classes.default to same_thread

Solution

  1. Step 1: Understand JUnit 5 parallel config properties

    Property junit.jupiter.execution.parallel.mode.default controls method-level parallelism; junit.jupiter.execution.parallel.mode.classes.default controls class-level parallelism.
  2. Step 2: Configure methods parallel, classes sequential

    Setting methods to concurrent and classes to same_thread runs tests in parallel within classes but not across classes.
  3. Final Answer:

    Set junit.jupiter.execution.parallel.mode.default to concurrent and junit.jupiter.execution.parallel.mode.classes.default to same_thread -> Option D
  4. Quick Check:

    Methods parallel + classes sequential = parallel in class only [OK]
Hint: Configure method and class parallel modes separately [OK]
Common Mistakes:
  • Assuming @Execution on methods controls class-level parallelism
  • Disabling parallel execution entirely
  • Using SAME_THREAD on classes disables all parallelism
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