This test class has two tests. The first runs only on Linux. The second skips on Windows. If assumptions fail, tests are skipped, not failed.
JUnit
import static org.junit.jupiter.api.Assumptions.*;
import org.junit.jupiter.api.Test;
public class AssumptionTest {
@Test
void testOnlyOnLinux() {
assumeTrue(System.getProperty("os.name").startsWith("Linux"));
System.out.println("Running test on Linux");
}
@Test
void testSkippedOnWindows() {
assumeFalse(System.getProperty("os.name").startsWith("Windows"));
System.out.println("Running test not on Windows");
}
}
OutputSuccess
Important Notes
Assumptions help keep test results clean by skipping irrelevant tests.
Skipped tests show as 'skipped' in reports, not as failures.
Use assumptions to check environment, data, or config before running tests.
Summary
Assumptions control if a test runs or skips based on conditions.
They prevent false failures when setup is not right.
Use assumptions to make tests smarter and results clearer.
Practice
(1/5)
1. What is the main purpose of using Assumptions.assumeTrue() in a JUnit test?
easy
A. To assert that a condition is true and fail the test if not
B. To skip the test if a condition is false
C. To log information during test execution
D. To initialize test data before running the test
Solution
Step 1: Understand the role of assumptions in JUnit
Assumptions check conditions before running a test and skip it if the condition is false, avoiding failure.
Step 2: Differentiate assumptions from assertions
Assertions fail tests when conditions are false, but assumptions skip tests instead.
Final Answer:
To skip the test if a condition is false -> Option B
What is the problem if the test always fails instead of skipping?
medium
A. The assumption method is not static and causes failure
B. The assumption condition is true, so test runs and fails
C. The assumption is not imported correctly
D. The assertion is incorrect and causes failure
Solution
Step 1: Check assumption usage and imports
If Assumptions.assumeTrue is not imported or used incorrectly, assumption may not skip test properly.
Step 2: Understand why test fails instead of skipping
Without correct import, assumption may not work, so test runs assertion and fails.
Final Answer:
The assumption is not imported correctly -> Option C
Quick Check:
Missing import breaks assumption skipping [OK]
Hint: Always import assumptions to enable skipping [OK]
Common Mistakes:
Not importing org.junit.jupiter.api.Assumptions
Thinking assumption methods must be static
Blaming assertion for skipping failure
5. You want to run a test only if an environment variable TEST_ENV equals "prod". Which JUnit 5 code snippet correctly uses assumptions to control test execution?
hard
A. if (System.getenv("TEST_ENV").equals("prod")) { // test code }
B. assertTrue("prod".equals(System.getenv("TEST_ENV")));
// test code
C. Assumptions.assumeFalse("prod".equals(System.getenv("TEST_ENV")));
// test code
D. Assumptions.assumeTrue("prod".equals(System.getenv("TEST_ENV")));
// test code
Solution
Step 1: Use assumeTrue to run test only if condition is met
Using Assumptions.assumeTrue(condition) skips the test if condition is false, so test runs only when TEST_ENV equals "prod".
Step 2: Evaluate other options for correctness
assertTrue("prod".equals(System.getenv("TEST_ENV"))); // test code uses assertion which fails test if false, not skip. Assumptions.assumeFalse("prod".equals(System.getenv("TEST_ENV")));
// test code skips when condition is true (opposite). if (System.getenv("TEST_ENV").equals("prod")) { // test code } is manual control, not assumption.
Final Answer:
Assumptions.assumeTrue("prod".equals(System.getenv("TEST_ENV")));
// test code -> Option D
Quick Check:
assumeTrue runs test only if true [OK]
Hint: Use assumeTrue for conditional test run [OK]
Common Mistakes:
Using assertTrue instead of assumeTrue
Using assumeFalse with wrong logic
Manually controlling test run without assumptions
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.