0
0
JUnittesting~20 mins

Test suites with @Suite in JUnit - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
JUnit Suite Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of JUnit test suite execution
Given the following JUnit 5 test suite setup, what will be the output when running the suite?
JUnit
import org.junit.jupiter.api.Test;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectClasses({TestA.class, TestB.class})
public class MyTestSuite {}

class TestA {
    @Test
    void testA1() {
        System.out.println("TestA1 executed");
    }
}

class TestB {
    @Test
    void testB1() {
        System.out.println("TestB1 executed");
    }
}
ATestB1 executed\nTestA1 executed
BTestA1 executed\nTestB1 executed
CNo output, tests are not executed by @Suite
DCompilation error due to missing @Test annotations
Attempts:
2 left
💡 Hint
Remember that @Suite runs all tests in the selected classes in the order they are declared.
assertion
intermediate
2:00remaining
Correct assertion to verify test suite execution count
You have a JUnit 5 test suite with two test classes, each containing two tests. Which assertion correctly verifies that the suite ran exactly 4 tests?
JUnit
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.platform.launcher.Launcher;
import org.junit.platform.launcher.LauncherDiscoveryRequest;
import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder;
import org.junit.platform.launcher.core.LauncherFactory;
import org.junit.platform.engine.discovery.DiscoverySelectors;
import org.junit.platform.launcher.TestExecutionSummary;
import org.junit.platform.launcher.listeners.SummaryGeneratingListener;

LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
    .selectors(DiscoverySelectors.selectClass(MyTestSuite.class))
    .build();
Launcher launcher = LauncherFactory.create();
SummaryGeneratingListener listener = new SummaryGeneratingListener();
launcher.execute(request, listener);
TestExecutionSummary summary = listener.getSummary();

// Which assertion is correct here?
AassertEquals(4, summary.getTestsFailedCount());
BassertEquals(2, summary.getTestsSucceededCount());
CassertEquals(4, summary.getTestsSucceededCount());
DassertEquals(0, summary.getTestsStartedCount());
Attempts:
2 left
💡 Hint
Count all successful tests run by the suite.
🔧 Debug
advanced
2:00remaining
Identify the cause of suite not running tests
Given this JUnit 5 test suite, why does running MyTestSuite not execute any tests?
JUnit
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;
import org.junit.jupiter.api.Test;

@Suite
@SelectClasses({TestX.class})
public class MyTestSuite {}

class TestX {
    void testX1() {
        System.out.println("TestX1 executed");
    }
}
ATestX's test method is missing the @Test annotation.
BThe @SelectClasses annotation must include the suite class itself.
CTestX class must be public for tests to run.
DThe @Suite annotation is missing @RunWith annotation.
Attempts:
2 left
💡 Hint
JUnit 5 requires test methods to be annotated with @Test to be recognized.
framework
advanced
2:00remaining
Understanding @Suite and test discovery in JUnit 5
Which statement about JUnit 5's @Suite and test discovery is TRUE?
A@Suite requires specifying test classes explicitly with @SelectClasses or @SelectPackages.
B@Suite automatically discovers all test classes in the project without configuration.
C@Suite can only run tests annotated with @BeforeEach and @AfterEach.
D@Suite replaces the need for @Test annotations inside test classes.
Attempts:
2 left
💡 Hint
Think about how JUnit 5 knows which tests to run in a suite.
🧠 Conceptual
expert
3:00remaining
Best practice for organizing large test suites with @Suite
You have a large project with hundreds of test classes. What is the best practice to organize test suites using @Suite to keep tests maintainable and efficient?
AUse @Suite only for integration tests and run unit tests separately without suites.
BPut all test classes in one huge suite annotated with @SelectClasses listing every test class.
CAvoid using @Suite and run tests individually to reduce complexity.
DCreate multiple smaller suites grouping related tests by feature or module, then create a master suite to run all.
Attempts:
2 left
💡 Hint
Think about scalability and ease of maintenance.