Bird
Raised Fist0
JUnittesting~15 mins

Maven dependency setup in JUnit - Build an Automation Script

Choose your learning style10 modes available
Verify JUnit dependency setup in Maven project
Preconditions (2)
Step 1: Open the project's pom.xml file
Step 2: Add the JUnit 5 dependency inside the <dependencies> tag
Step 3: Save the pom.xml file
Step 4: Run 'mvn clean test' command in the project directory
Step 5: Observe the build and test execution output
✅ Expected Result: Maven downloads the JUnit 5 dependency, compiles the project, and runs tests successfully without errors
Automation Requirements - JUnit 5 with Maven
Assertions Needed:
Verify that the JUnit 5 dependency is present in the pom.xml
Verify that 'mvn test' command runs successfully
Verify that test classes using JUnit 5 annotations execute and pass
Best Practices:
Use the latest stable JUnit 5 version in dependency
Place dependencies inside <dependencies> tag in pom.xml
Use Maven lifecycle commands for build and test
Keep pom.xml well formatted and valid XML
Automated Solution
JUnit
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo-project</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.10.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.1.2</version>
                <configuration>
                    <useModulePath>false</useModulePath>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

This pom.xml file sets up a Maven project with the JUnit 5 dependency.

The <dependency> tag inside <dependencies> adds JUnit Jupiter version 5.10.0 for testing.

The scope is set to test so JUnit is only used during test phases.

The maven-surefire-plugin is configured to run tests during the Maven test lifecycle phase.

Running mvn clean test downloads dependencies, compiles code, and runs tests using JUnit 5.

This setup ensures tests annotated with JUnit 5 annotations like @Test will execute correctly.

Common Mistakes - 4 Pitfalls
Using an outdated JUnit version in the dependency
Placing the JUnit dependency outside the <dependencies> tag
{'mistake': "Not setting the scope to 'test' for JUnit dependency", 'why_bad': 'JUnit jars will be included in production builds unnecessarily, increasing size', 'correct_approach': 'Set <scope>test</scope> so JUnit is only used during testing'}
Not configuring the surefire plugin or using an incompatible version
Bonus Challenge

Now add data-driven testing with 3 different inputs using JUnit 5 parameterized tests

Show Hint

Practice

(1/5)
1. What is the main purpose of adding a JUnit dependency in the pom.xml file of a Maven project?
easy
A. To include JUnit libraries automatically for running tests
B. To compile the main application code
C. To deploy the application to a server
D. To create a new Maven project

Solution

  1. Step 1: Understand Maven dependency role

    Maven dependencies add external libraries to the project automatically.
  2. Step 2: Identify JUnit dependency purpose

    JUnit dependency specifically adds testing libraries to run unit tests.
  3. Final Answer:

    To include JUnit libraries automatically for running tests -> Option A
  4. Quick Check:

    Maven dependency = add libraries [OK]
Hint: JUnit dependency adds test libraries automatically [OK]
Common Mistakes:
  • Confusing dependency with deployment
  • Thinking dependency compiles main code
  • Assuming dependency creates projects
2. Which of the following is the correct way to add JUnit 5 dependency in pom.xml with scope set to test?
easy
A. \n org.junit.jupiter\n junit-jupiter\n 5.9.2\n
B. \n org.junit.jupiter\n junit-jupiter\n 5.9.2\n test\n
C. \n org.junit.jupiter\n junit-jupiter\n compile\n 5.9.2\n
D. \n org.junit.jupiter\n junit-jupiter-api\n 5.9.2\n test\n

Solution

  1. Step 1: Check groupId and artifactId for JUnit 5

    The standard JUnit 5 dependency uses org.junit.jupiter and junit-jupiter.
  2. Step 2: Verify scope is set to test

    Scope must be test to limit usage to testing phase.
  3. Final Answer:

    Correct dependency with groupId, artifactId, version, and test scope -> Option B
  4. Quick Check:

    JUnit 5 dependency + test scope = \n org.junit.jupiter\n junit-jupiter\n 5.9.2\n test\n [OK]
Hint: Always set test for test dependencies [OK]
Common Mistakes:
  • Omitting the test tag
  • Using wrong artifactId like junit-jupiter-api
  • Setting scope to compile instead of test
3. Given this pom.xml snippet, what will happen when you run mvn test?
<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter</artifactId>
  <version>5.9.2</version>
  <scope>test</scope>
</dependency>
medium
A. JUnit 5 tests will run successfully using the added dependency
B. Tests will fail because the dependency scope is wrong
C. Maven will ignore the dependency and not run tests
D. Compilation will fail due to missing JUnit classes

Solution

  1. Step 1: Understand scope test effect

    Scope test means dependency is available only during testing phase.
  2. Step 2: Running mvn test uses test scope dependencies

    Maven includes JUnit 5 library during test execution, so tests run fine.
  3. Final Answer:

    JUnit 5 tests will run successfully using the added dependency -> Option A
  4. Quick Check:

    Scope test + mvn test = tests run [OK]
Hint: Scope test means dependency active only during tests [OK]
Common Mistakes:
  • Thinking test scope excludes dependency during tests
  • Confusing compile scope with test scope
  • Assuming tests run without dependencies
4. You added this dependency to pom.xml but your tests fail with ClassNotFoundException for JUnit classes. What is the likely problem?
<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-api</artifactId>
  <version>5.9.2</version>
</dependency>
medium
A. Dependency must be added in settings.xml not pom.xml
B. Missing <scope>test</scope> causes dependency not to load
C. Version 5.9.2 is incompatible with Maven
D. Using junit-jupiter-api alone is insufficient for tests

Solution

  1. Step 1: Identify artifactId usage

    junit-jupiter-api provides only the test API, not the engine.
  2. Step 2: Recognize missing JUnit engine dependency

    Tests need junit-jupiter which bundles API and engine.
  3. Final Answer:

    Using junit-jupiter-api alone is insufficient for tests -> Option D
  4. Quick Check:

    Missing JUnit engine causes ClassNotFoundException [OK]
Hint: Use junit-jupiter for full JUnit 5, not just api [OK]
Common Mistakes:
  • Assuming api artifact is enough
  • Ignoring missing scope tag
  • Thinking version causes ClassNotFoundException
5. You want to add JUnit 5 to your Maven project but only for running tests, not for compiling main code. Which is the best complete dependency snippet to add in pom.xml?
hard
A. org.junit.vintage junit-vintage-engine 5.9.2 test
B. org.junit.jupiter junit-jupiter-engine 5.9.2 compile
C. org.junit.jupiter junit-jupiter 5.9.2 test
D. org.junit.jupiter junit-jupiter-api 5.9.2 runtime

Solution

  1. Step 1: Identify full JUnit 5 dependency

    The junit-jupiter artifact includes API and engine for tests.
  2. Step 2: Confirm scope for test-only usage

    Setting scope to test ensures dependency is used only during testing.
  3. Final Answer:

    Complete JUnit 5 dependency with test scope -> Option C
  4. Quick Check:

    JUnit 5 + test scope = org.junit.jupiter junit-jupiter 5.9.2 test [OK]
Hint: Use junit-jupiter with scope test for proper test setup [OK]
Common Mistakes:
  • Using compile or runtime scope instead of test
  • Using only junit-jupiter-engine or vintage-engine
  • Confusing API artifact with full junit-jupiter
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