Bird
Raised Fist0
JUnittesting~10 mins

assumingThat for conditional assertions 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 use assumingThat for a conditional assertion.

JUnit
import static org.junit.jupiter.api.Assumptions.assumingThat;
import static org.junit.jupiter.api.Assertions.assertEquals;

@Test
void testConditional() {
    String env = "DEV";
    assumingThat(env.equals("[1]"), () -> {
        assertEquals(5, 2 + 3);
    });
}
Drag options to blanks, or click blank then click option'
ASTAGE
BDEV
CTEST
DPROD
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different environment string that does not match the env variable.
Forgetting to use assumingThat and using assertEquals directly.
2fill in blank
medium

Complete the code to skip the assertion when the condition is false using assumingThat.

JUnit
import static org.junit.jupiter.api.Assumptions.assumingThat;
import static org.junit.jupiter.api.Assertions.assertTrue;

@Test
void testSkipAssertion() {
    boolean isFeatureEnabled = false;
    assumingThat(isFeatureEnabled, () -> {
        assertTrue([1]);
    });
}
Drag options to blanks, or click blank then click option'
Atrue
Bfalse
CisFeatureEnabled
D!isFeatureEnabled
Attempts:
3 left
💡 Hint
Common Mistakes
Using false inside assertTrue which causes failure when the assertion runs.
Using the condition variable inside assertTrue which is redundant.
3fill in blank
hard

Fix the error in the code by completing the assumingThat condition correctly.

JUnit
import static org.junit.jupiter.api.Assumptions.assumingThat;
import static org.junit.jupiter.api.Assertions.assertEquals;

@Test
void testFixCondition() {
    String mode = "PROD";
    assumingThat([1], () -> {
        assertEquals(10, 5 + 5);
    });
}
Drag options to blanks, or click blank then click option'
Amode == "PROD"
Bmode.equalsIgnoreCase("prod")
Cmode.equals("PROD")
Dmode != null
Attempts:
3 left
💡 Hint
Common Mistakes
Using == to compare strings which checks reference equality, not content.
Using equalsIgnoreCase when exact match is required.
4fill in blank
hard

Fill both blanks to correctly use assumingThat with a boolean condition and an assertion.

JUnit
import static org.junit.jupiter.api.Assumptions.assumingThat;
import static org.junit.jupiter.api.Assertions.assertFalse;

@Test
void testBothBlanks() {
    boolean isActive = [1];
    assumingThat(isActive, () -> {
        assertFalse([2]);
    });
}
Drag options to blanks, or click blank then click option'
Atrue
Bfalse
Attempts:
3 left
💡 Hint
Common Mistakes
Setting isActive to false which skips the assertion.
Using assertFalse(true) which fails the test.
5fill in blank
hard

Fill all three blanks to write a conditional assertion using assumingThat with a string check and an assertion.

JUnit
import static org.junit.jupiter.api.Assumptions.assumingThat;
import static org.junit.jupiter.api.Assertions.assertNotNull;

@Test
void testThreeBlanks() {
    String status = [1];
    assumingThat(status.equals([2]), () -> {
        assertNotNull([3]);
    });
}
Drag options to blanks, or click blank then click option'
A"ACTIVE"
Cstatus
D"INACTIVE"
Attempts:
3 left
💡 Hint
Common Mistakes
Using the variable status for the first blank, causing a compilation error.
Using a wrong string for the condition check.
Passing null to assertNotNull causing failure.

Practice

(1/5)
1. What is the main purpose of assumingThat in JUnit tests?
easy
A. To run assertions only if a specific condition is true
B. To always run assertions regardless of conditions
C. To skip all tests unconditionally
D. To replace all assertions with print statements

Solution

  1. Step 1: Understand the role of assumingThat

    assumingThat is used to run assertions only when a given condition is true, otherwise it skips them.
  2. Step 2: Compare options with this behavior

    Only "To run assertions only if a specific condition is true" correctly describes this conditional behavior. Options A, B, and C do not match the purpose.
  3. Final Answer:

    To run assertions only if a specific condition is true -> Option A
  4. Quick Check:

    Conditional assertions = run only if true [OK]
Hint: Remember: assumingThat runs assertions only when condition is true [OK]
Common Mistakes:
  • Thinking assumingThat always runs assertions
  • Confusing assumingThat with skipping all tests
  • Believing assumingThat replaces assertions
2. Which of the following is the correct syntax to use assumingThat in a JUnit 5 test?
easy
A. assumingThat(assertEquals(5, result), condition);
B. assumingThat(condition, assertEquals(5, result));
C. assumingThat(condition, () -> assertEquals(5, result));
D. assumingThat(() -> assertEquals(5, result), condition);

Solution

  1. Step 1: Recall the method signature of assumingThat

    It takes a boolean condition first, then a lambda expression with assertions.
  2. Step 2: Match options to this signature

    assumingThat(condition, () -> assertEquals(5, result)); matches: assumingThat(condition, () -> assertion). Others have wrong order or missing lambda.
  3. Final Answer:

    assumingThat(condition, () -> assertEquals(5, result)); -> Option C
  4. Quick Check:

    Condition first, then lambda [OK]
Hint: Syntax: assumingThat(condition, () -> assertion) [OK]
Common Mistakes:
  • Putting assertion before condition
  • Not using a lambda for the assertion
  • Passing assertion directly without lambda
3. Consider the following code snippet:
int value = 10;
assumingThat(value > 5, () -> assertTrue(value < 20));
assumingThat(value < 5, () -> assertTrue(value > 0));

What will be the result of running this test?
medium
A. Both assertions run and pass
B. First assertion runs and passes; second is skipped
C. First assertion fails; second runs and passes
D. Both assertions are skipped

Solution

  1. Step 1: Evaluate the first condition and assertion

    Condition: value > 5 is true (10 > 5). So assertion value < 20 runs and passes.
  2. Step 2: Evaluate the second condition and assertion

    Condition: value < 5 is false (10 < 5). So assertion value > 0 is skipped.
  3. Final Answer:

    First assertion runs and passes; second is skipped -> Option B
  4. Quick Check:

    True condition runs assertion, false skips [OK]
Hint: Only assertions with true conditions run [OK]
Common Mistakes:
  • Assuming all assertions run regardless of condition
  • Confusing which assertions are skipped
  • Thinking skipped assertions cause failure
4. Identify the error in this JUnit 5 test using assumingThat:
int x = 3;
x = 4;
assumingThat(() -> x > 0, () -> assertEquals(3, x));
medium
A. The variable x is not final or effectively final
B. The assertion lambda is missing parentheses
C. The condition should be a boolean, not a lambda
D. The assertEquals method is used incorrectly

Solution

  1. Step 1: Check the variable capture rules for lambdas

    Local variables used in lambdas must be final or effectively final. Here, x is reassigned (x = 4), so it is not effectively final.
  2. Step 2: Identify the error in the code

    This causes a compilation error because lambdas cannot capture non-effectively final variables.
  3. Final Answer:

    The variable x is not final or effectively final -> Option A
  4. Quick Check:

    Lambda locals must be effectively final [OK]
Hint: Lambdas capture effectively final locals only [OK]
Common Mistakes:
  • Modifying local variables used in lambdas
  • Not declaring local variables as final when needed
  • Ignoring Java lambda capture rules
5. You want to write a test that only checks if a list is empty when the environment variable ENV equals "test". Which code snippet correctly uses assumingThat to achieve this?
hard
A. assumingThat(System.getenv("ENV").equals("test"), assertTrue(list.isEmpty()));
B. assumingThat(() -> System.getenv("ENV").equals("test"), assertTrue(list.isEmpty()));
C. assumingThat(System.getenv("ENV") == "test", () -> assertTrue(list.isEmpty()));
D. assumingThat(System.getenv("ENV").equals("test"), () -> assertTrue(list.isEmpty()));

Solution

  1. Step 1: Check the condition type

    The condition must be a boolean expression, so System.getenv("ENV").equals("test") is correct.
  2. Step 2: Verify the assertion lambda

    The assertion must be inside a lambda: () -> assertTrue(list.isEmpty()).
  3. Step 3: Evaluate each option

    A matches both requirements. B uses lambda for condition and passes assertion without lambda. C uses == for string comparison (wrong). D passes assertion without lambda.
  4. Final Answer:

    assumingThat(System.getenv("ENV").equals("test"), () -> assertTrue(list.isEmpty())); -> Option D
  5. Quick Check:

    Boolean condition + assertion lambda = correct [OK]
Hint: Condition boolean, assertion inside lambda [OK]
Common Mistakes:
  • Using lambda for condition instead of boolean
  • Using == for string comparison
  • Passing assertion without lambda
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