Bird
Raised Fist0
JUnittesting~20 mins

Test result publishing in JUnit - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
JUnit Test Result Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
JUnit test result for a passing test
What is the test execution result shown in the JUnit XML report for this passing test?
JUnit
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class SampleTest {
    @Test
    void testAlwaysPasses() {
        assertTrue(5 > 1);
    }
}
A<testcase classname="SampleTest" name="testAlwaysPasses" time="0.001"><error message="Exception thrown"/></testcase>
B<testcase classname="SampleTest" name="testAlwaysPasses" time="0.001"/>
C<testcase classname="SampleTest" name="testAlwaysPasses" time="0.001"><skipped/></testcase>
D<testcase classname="SampleTest" name="testAlwaysPasses" time="0.001"><failure message="Assertion failed"/></testcase>
Attempts:
2 left
💡 Hint
Passing tests do not have failure, error, or skipped tags in the JUnit XML report.
❓ Predict Output
intermediate
2:00remaining
JUnit test result for a failed assertion
What is the test execution result shown in the JUnit XML report for this failing test?
JUnit
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class SampleTest {
    @Test
    void testFails() {
        assertEquals(5, 3);
    }
}
A<testcase classname="SampleTest" name="testFails" time="0.001"><failure message="expected:&lt;5&gt; but was:&lt;3&gt;"/></testcase>
B<testcase classname="SampleTest" name="testFails" time="0.001"/>
C<testcase classname="SampleTest" name="testFails" time="0.001"><error message="NullPointerException"/></testcase>
D<testcase classname="SampleTest" name="testFails" time="0.001"><skipped/></testcase>
Attempts:
2 left
💡 Hint
Failed assertions are reported with a tag including the failure message.
❓ assertion
advanced
2:00remaining
Correct assertion to verify test failure message in JUnit
Which assertion correctly verifies that a JUnit test failure message contains the text "expected:<5> but was:<3>"?
AassertTrue(failureMessage.contains("expected:<5> but was:<3>"));
BassertEquals("expected:<5> but was:<3>", failureMessage);
CassertNull(failureMessage);
DassertFalse(failureMessage.contains("expected:<5> but was:<3>"));
Attempts:
2 left
💡 Hint
Use assertTrue to check if the failure message contains the expected substring.
🔧 Debug
advanced
2:00remaining
Identify the cause of missing test results in JUnit report
A JUnit XML report is missing test results for some tests. Which of the following is the most likely cause?
ATest methods throw checked exceptions.
BTests use assertTrue assertions instead of assertEquals.
CTest methods have void return type.
DTests are annotated with @Test but the test class is not public.
Attempts:
2 left
💡 Hint
JUnit requires test classes to be public to discover and run tests.
❓ framework
expert
2:00remaining
Best practice for publishing JUnit test results in CI pipeline
In a CI pipeline, which approach ensures reliable publishing of JUnit test results for all test runs, including flaky tests and retries?
AManually edit the JUnit XML files to remove duplicate test cases before publishing.
BOnly publish the JUnit XML file from the first test run, ignoring retries.
CConfigure the CI to collect and merge all JUnit XML files generated by each test run and retry.
DPublish test results only if the test run passes without retries.
Attempts:
2 left
💡 Hint
CI tools often support merging multiple JUnit XML files to aggregate results.

Practice

(1/5)
1. What does test result publishing in JUnit primarily show?
easy
A. Whether tests pass or fail
B. The source code of the tests
C. The time taken to write tests
D. The number of test files in the project

Solution

  1. Step 1: Understand the purpose of test result publishing

    Test result publishing shows the outcome of running tests, mainly if they pass or fail.
  2. Step 2: Identify what is displayed after tests run

    JUnit displays test results to inform developers about test success or failure.
  3. Final Answer:

    Whether tests pass or fail -> Option A
  4. Quick Check:

    Test result publishing = pass/fail status [OK]
Hint: Test results show pass or fail status [OK]
Common Mistakes:
  • Confusing test results with source code
  • Thinking test results show test writing time
  • Assuming test results count files
2. Which JUnit annotation is used to mark a method as a test so its result can be published?
easy
A. @Test
B. @AfterEach
C. @BeforeAll
D. @Ignore

Solution

  1. Step 1: Identify the annotation that marks test methods

    The @Test annotation tells JUnit which methods to run as tests and publish results for.
  2. Step 2: Differentiate from other lifecycle annotations

    @BeforeAll and @AfterEach are for setup/cleanup, @Ignore skips tests, so they don't mark tests themselves.
  3. Final Answer:

    @Test -> Option A
  4. Quick Check:

    Test method annotation = @Test [OK]
Hint: Use @Test to mark test methods [OK]
Common Mistakes:
  • Using @BeforeAll or @AfterEach as test markers
  • Confusing @Ignore with test execution
  • Missing @Test annotation on test methods
3. Given this JUnit test method, what will the test result publishing show?
  @Test
  void testSum() {
    assertEquals(5, 2 + 3);
  }
medium
A. Test fails because 2 + 3 is not 5
B. Test throws an error due to syntax
C. Test passes because 2 + 3 equals 5
D. Test is ignored due to missing annotation

Solution

  1. Step 1: Evaluate the assertion in the test method

    The assertion checks if 2 + 3 equals 5, which is true.
  2. Step 2: Determine the test outcome based on assertion

    Since the assertion is true, the test passes and JUnit publishes a pass result.
  3. Final Answer:

    Test passes because 2 + 3 equals 5 -> Option C
  4. Quick Check:

    2 + 3 = 5 means test passes [OK]
Hint: Check if assertion condition is true for pass [OK]
Common Mistakes:
  • Assuming 2 + 3 is not 5
  • Thinking missing annotation causes ignore here
  • Confusing syntax errors with assertion failures
4. This JUnit test method is supposed to check if a list is empty, but the test result publishing shows failure. What is the error?
  @Test
  void testEmptyList() {
    List<String> list = new ArrayList<>();
    assertTrue(list.isEmpty());
  }
medium
A. assertTrue is used incorrectly; should be assertFalse
B. No error; test should pass and publish success
C. The list is not initialized properly
D. Missing import for List causes failure

Solution

  1. Step 1: Analyze the list initialization

    The list is created as a new empty ArrayList, so list.isEmpty() returns true.
  2. Step 2: Check the assertion logic

    assertTrue(list.isEmpty()) expects true, which matches the empty list state, so the test passes.
  3. Final Answer:

    No error; test should pass and publish success -> Option B
  4. Quick Check:

    Empty list means assertTrue(list.isEmpty()) passes [OK]
Hint: Empty list means isEmpty() returns true [OK]
Common Mistakes:
  • Thinking list is not empty after initialization
  • Confusing assertTrue with assertFalse
  • Assuming missing imports cause test failure without error
5. You want to publish test results in a JUnit project and generate a report file automatically after tests run. Which approach is best?
hard
A. Add @Report annotation to test classes to auto-generate reports
B. Manually write test results to a file inside each test method
C. Print test results to console and copy them manually to a file
D. Use a build tool like Maven or Gradle with JUnit plugins to generate reports

Solution

  1. Step 1: Understand automated test result publishing

    Build tools like Maven or Gradle integrate with JUnit to run tests and generate reports automatically.
  2. Step 2: Evaluate other options for report generation

    Manually writing or copying results is error-prone and inefficient; @Report annotation does not exist in JUnit.
  3. Final Answer:

    Use a build tool like Maven or Gradle with JUnit plugins to generate reports -> Option D
  4. Quick Check:

    Automate reports with build tools [OK]
Hint: Use Maven/Gradle plugins for automatic reports [OK]
Common Mistakes:
  • Trying to write results manually inside tests
  • Copying console output instead of automating
  • Assuming non-existent annotations generate reports
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