Bird
Raised Fist0
JUnittesting~20 mins

Gradle dependency setup in JUnit - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Gradle JUnit Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Gradle test task configuration?
Given the following Gradle build snippet, what will be the result when running ./gradlew test?
JUnit
plugins {
    id 'java'
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.2'
}

test {
    useJUnitPlatform()
    testLogging {
        events 'passed', 'failed'
    }
}
ABuild fails due to missing JUnit engine dependency
BTests run using JUnit 4 platform, but no test events are shown in the console
CTests run using JUnit 5 platform, showing passed and failed test events in the console
DTests run but no test results are displayed because testLogging is not configured
Attempts:
2 left
💡 Hint
Check which JUnit version is configured and how testLogging is set.
❓ assertion
intermediate
1:30remaining
Which Gradle dependency scope is correct for JUnit 5 API?
You want to write tests using JUnit 5 API in Gradle. Which dependency configuration should you use?
AtestImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2'
Bimplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2'
CruntimeOnly 'org.junit.jupiter:junit-jupiter-api:5.9.2'
DcompileOnly 'org.junit.jupiter:junit-jupiter-api:5.9.2'
Attempts:
2 left
💡 Hint
JUnit API is only needed when compiling test code, not main code.
🔧 Debug
advanced
2:30remaining
Why does the Gradle test task not run any tests?
Given this Gradle snippet, tests are not detected or run. What is the cause?
JUnit
plugins {
    id 'java'
}

dependencies {
    testImplementation 'junit:junit:4.13.2'
}

test {
    useJUnitPlatform()
}
AJUnit dependency version is outdated and causes build failure
BJUnit 4 dependency is used but <code>useJUnitPlatform()</code> requires JUnit 5 tests
CMissing <code>testRuntimeOnly</code> dependency for JUnit engine
DThe <code>test</code> task is missing <code>testLogging</code> configuration
Attempts:
2 left
💡 Hint
Check compatibility between JUnit version and test platform used.
❓ framework
advanced
3:00remaining
How to configure Gradle to run JUnit 5 tests with parameterized support?
You want to run JUnit 5 tests including parameterized tests. Which dependencies and configuration are correct?
A
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.2'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.9.2'
test { useJUnitPlatform() }
B
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.2'
test { useJUnitPlatform() }
C
implementation 'org.junit.jupiter:junit-jupiter-api:5.9.2'
runtimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.2'
test { useJUnitPlatform() }
D
testImplementation 'junit:junit:4.13.2'
test { useJUnitPlatform() }
Attempts:
2 left
💡 Hint
Parameterized tests need a separate JUnit 5 params dependency.
🧠 Conceptual
expert
3:00remaining
What is the effect of missing testRuntimeOnly dependency for JUnit engine in Gradle?
If you declare only testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2' but omit testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.2', what happens when running tests?
ABuild fails during compilation due to missing engine classes
BTests run but no test results are reported
CTests run successfully because API includes engine classes
DTests compile but fail at runtime with ClassNotFoundException for JUnit engine classes
Attempts:
2 left
💡 Hint
Consider the role of API vs engine dependencies in JUnit 5.

Practice

(1/5)
1. What is the correct Gradle configuration to add JUnit 5 as a test-only dependency?
easy
A. compile 'org.junit.jupiter:junit-jupiter:5.9.3'
B. implementation 'org.junit.jupiter:junit-jupiter:5.9.3'
C. runtimeOnly 'org.junit.jupiter:junit-jupiter:5.9.3'
D. testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3'

Solution

  1. Step 1: Understand Gradle dependency scopes

    For testing libraries like JUnit, Gradle uses testImplementation to include dependencies only in the test source set.
  2. Step 2: Identify the correct dependency declaration

    The correct syntax is testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3' to add JUnit 5 for tests only.
  3. Final Answer:

    testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3' -> Option D
  4. Quick Check:

    JUnit test dependency = testImplementation [OK]
Hint: Use testImplementation for test-only libraries like JUnit [OK]
Common Mistakes:
  • Using implementation instead of testImplementation
  • Using compile which is deprecated
  • Using runtimeOnly which excludes compile-time access
2. Which of the following is the correct syntax to add JUnit 5 dependency in Gradle's build.gradle file using the Kotlin DSL?
easy
A. testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3'
B. implementation("org.junit.jupiter:junit-jupiter:5.9.3")
C. testImplementation("org.junit.jupiter:junit-jupiter:5.9.3")
D. compile 'org.junit.jupiter:junit-jupiter:5.9.3'

Solution

  1. Step 1: Recognize Kotlin DSL syntax

    Gradle Kotlin DSL uses parentheses and double quotes for dependencies, e.g., testImplementation("group:name:version").
  2. Step 2: Identify the correct test dependency syntax

    testImplementation("org.junit.jupiter:junit-jupiter:5.9.3") uses the correct Kotlin DSL syntax for test dependencies.
  3. Final Answer:

    testImplementation("org.junit.jupiter:junit-jupiter:5.9.3") -> Option C
  4. Quick Check:

    Kotlin DSL uses parentheses and quotes [OK]
Hint: Kotlin DSL uses parentheses and quotes for dependencies [OK]
Common Mistakes:
  • Using single quotes in Kotlin DSL
  • Using compile which is deprecated
  • Mixing Groovy and Kotlin syntax
3. Given this Gradle snippet in Groovy DSL:
dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3'
    implementation 'com.google.guava:guava:31.1-jre'
}

Which statement is true when running tests?
medium
A. Guava is available only during test runtime.
B. JUnit 5 is available only during test compilation and runtime.
C. JUnit 5 is available during main source compilation.
D. Guava is available only during test compilation.

Solution

  1. Step 1: Understand dependency scopes

    testImplementation means the dependency is available only for compiling and running tests, not main code. implementation is for main code and runtime.
  2. Step 2: Apply to given dependencies

    JUnit 5 is declared with testImplementation, so it is only for test compilation and runtime. Guava is declared with implementation, so it is available in main code and runtime, not limited to tests.
  3. Final Answer:

    JUnit 5 is available only during test compilation and runtime. -> Option B
  4. Quick Check:

    testImplementation = test-only scope [OK]
Hint: testImplementation means test-only availability [OK]
Common Mistakes:
  • Confusing implementation with testImplementation
  • Assuming testImplementation affects main code
  • Mixing runtimeOnly with implementation
4. You added this line to your Gradle build file:
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3'

But your tests fail to run with a "ClassNotFoundException" for JUnit classes. What is the most likely cause?
medium
A. You forgot to apply the 'java' or 'java-library' plugin in build.gradle.
B. You used 'testImplementation' instead of 'implementation'.
C. The JUnit version 5.9.3 does not exist.
D. You need to add 'runtimeOnly' for JUnit.

Solution

  1. Step 1: Check plugin application

    Gradle needs the 'java' or 'java-library' plugin to recognize source sets and dependencies properly.
  2. Step 2: Understand impact on dependencies

    Without the plugin, Gradle won't configure test source sets, causing ClassNotFoundException even if dependencies are declared.
  3. Final Answer:

    You forgot to apply the 'java' or 'java-library' plugin in build.gradle. -> Option A
  4. Quick Check:

    Java plugin required for test dependencies [OK]
Hint: Always apply 'java' plugin to enable test dependencies [OK]
Common Mistakes:
  • Using implementation instead of testImplementation
  • Assuming dependency version is wrong without checking
  • Adding runtimeOnly unnecessarily
5. You want to add JUnit 5 and Mockito for testing in your Gradle project. Which is the best way to declare these dependencies to keep your build file organized and efficient?
hard
A. Use testImplementation for both JUnit and Mockito dependencies.
B. Use implementation for JUnit and testImplementation for Mockito.
C. Use runtimeOnly for both JUnit and Mockito.
D. Use compileOnly for JUnit and implementation for Mockito.

Solution

  1. Step 1: Understand dependency scopes for testing libraries

    Both JUnit and Mockito are used only during testing, so they should be added with testImplementation to avoid including them in production code.
  2. Step 2: Choose consistent and clear dependency declarations

    Using testImplementation for both keeps the build file organized and ensures dependencies are available only for tests.
  3. Final Answer:

    Use testImplementation for both JUnit and Mockito dependencies. -> Option A
  4. Quick Check:

    Test libraries = testImplementation [OK]
Hint: Put all test libs under testImplementation for clarity [OK]
Common Mistakes:
  • Mixing implementation and testImplementation for test libs
  • Using runtimeOnly which excludes compile-time access
  • Using compileOnly which excludes runtime
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