From dd948d35ff173a2fa8ede233627ca1d6856e685f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 09:51:25 +0000 Subject: [PATCH 1/2] Initial plan From cd2e2d5352c8f18610adf2073fc379071f81a948 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 10:18:22 +0000 Subject: [PATCH 2/2] Refactor AcceptanceTestSuite to use composition instead of inheritance Co-authored-by: chrjohn <6644028+chrjohn@users.noreply.github.com> --- .../test/acceptance/AcceptanceTestSuite.java | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/quickfixj-core/src/test/java/quickfix/test/acceptance/AcceptanceTestSuite.java b/quickfixj-core/src/test/java/quickfix/test/acceptance/AcceptanceTestSuite.java index bdf142073..6cf393b5a 100644 --- a/quickfixj-core/src/test/java/quickfix/test/acceptance/AcceptanceTestSuite.java +++ b/quickfixj-core/src/test/java/quickfix/test/acceptance/AcceptanceTestSuite.java @@ -29,22 +29,16 @@ import java.util.concurrent.Executors; /** - * Note on inheritance: - * This class intentionally extends junit.framework.TestSuite (JUnit 3) even though - * it is run with the JUnit 4 runner {@link org.junit.runners.AllTests}. - * - * Rationale: - * - The static {@code suite()} method below programmatically builds a hierarchical - * TestSuite tree and wraps instances of this class into {@link junit.extensions.TestSetup} - * via {@code new AcceptanceTestServerSetUp(new AcceptanceTestSuite(...))}. - * - {@link junit.extensions.TestSetup} expects a {@link junit.framework.Test} and later - * casts {@code getTest()} to {@link junit.framework.TestSuite}. Therefore - * {@code AcceptanceTestSuite} must itself be a TestSuite instance. - * - The AllTests runner discovers and executes the returned {@link junit.framework.Test} - * from {@code suite()}; the inheritance here is required for composition, not for discovery. + * Acceptance test suite that programmatically discovers and runs FIX protocol tests. + *
+ * This class uses composition to hold a {@link TestSuite} internally, rather than
+ * extending it directly. The static {@code suite()} method builds a hierarchical
+ * test tree that is executed via the JUnit 4 {@link AllTests} runner.
*/
@RunWith(AllTests.class)
-public class AcceptanceTestSuite extends TestSuite {
+public class AcceptanceTestSuite {
+
+ private final TestSuite delegate;
private static final String ATEST_TIMEOUT_KEY = "atest.timeout";
private static final String ATEST_TRANSPORT_KEY = "atest.transport";
private static final String ATEST_SKIPSLOW_KEY = "atest.skipslow";
@@ -149,7 +143,7 @@ public AcceptanceTestSuite(String testDirectory, boolean multithreaded, Map