From b271f1fcd05fbd2d54526942c717f706ef24d3b3 Mon Sep 17 00:00:00 2001 From: Napalys Klicius Date: Tue, 26 Aug 2025 08:20:56 +0000 Subject: [PATCH] Java: Renamed query `java/mocking-all-non-private-methods-means-unit-test-is-too-big` to `java/excessive-public-method-mocking` and changed wording from non-private to public --- .../query-suite/java-code-quality-extended.qls.expected | 2 +- .../java/query-suite/java-code-quality.qls.expected | 2 +- ...UnitTestIsTooBig.md => ExcessivePublicMethodMocking.md} | 2 +- ...UnitTestIsTooBig.ql => ExcessivePublicMethodMocking.ql} | 7 ++++--- .../Employee.java | 0 .../EmployeeRecord.java | 0 .../EmployeeStatus.java | 0 .../ExcessivePublicMethodMocking.expected} | 0 .../ExcessivePublicMethodMocking.qlref | 2 ++ .../TestORM.java | 0 .../options | 0 .../MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.qlref | 2 -- 12 files changed, 9 insertions(+), 8 deletions(-) rename java/ql/src/Likely Bugs/Frameworks/JUnit/{MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.md => ExcessivePublicMethodMocking.md} (89%) rename java/ql/src/Likely Bugs/Frameworks/JUnit/{MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.ql => ExcessivePublicMethodMocking.ql} (90%) rename java/ql/test/query-tests/{MockingAllNonPrivateMethodsMeansUnitTestIsTooBig => ExcessivePublicMethodMocking}/Employee.java (100%) rename java/ql/test/query-tests/{MockingAllNonPrivateMethodsMeansUnitTestIsTooBig => ExcessivePublicMethodMocking}/EmployeeRecord.java (100%) rename java/ql/test/query-tests/{MockingAllNonPrivateMethodsMeansUnitTestIsTooBig => ExcessivePublicMethodMocking}/EmployeeStatus.java (100%) rename java/ql/test/query-tests/{MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.expected => ExcessivePublicMethodMocking/ExcessivePublicMethodMocking.expected} (100%) create mode 100644 java/ql/test/query-tests/ExcessivePublicMethodMocking/ExcessivePublicMethodMocking.qlref rename java/ql/test/query-tests/{MockingAllNonPrivateMethodsMeansUnitTestIsTooBig => ExcessivePublicMethodMocking}/TestORM.java (100%) rename java/ql/test/query-tests/{MockingAllNonPrivateMethodsMeansUnitTestIsTooBig => ExcessivePublicMethodMocking}/options (100%) delete mode 100644 java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.qlref diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected index 5de435a0e74..e488635f436 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-quality-extended.qls.expected @@ -36,8 +36,8 @@ ql/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql ql/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql +ql/java/ql/src/Likely Bugs/Frameworks/JUnit/ExcessivePublicMethodMocking.ql ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql -ql/java/ql/src/Likely Bugs/Frameworks/JUnit/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.ql ql/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql diff --git a/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected index 791f64cd672..4438c259e7a 100644 --- a/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected +++ b/java/ql/integration-tests/java/query-suite/java-code-quality.qls.expected @@ -34,8 +34,8 @@ ql/java/ql/src/Likely Bugs/Concurrency/NonSynchronizedOverride.ql ql/java/ql/src/Likely Bugs/Concurrency/ScheduledThreadPoolExecutorZeroThread.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchOnBoxedType.ql ql/java/ql/src/Likely Bugs/Concurrency/SynchSetUnsynchGet.ql +ql/java/ql/src/Likely Bugs/Frameworks/JUnit/ExcessivePublicMethodMocking.ql ql/java/ql/src/Likely Bugs/Frameworks/JUnit/JUnit5MissingNestedAnnotation.ql -ql/java/ql/src/Likely Bugs/Frameworks/JUnit/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.ql ql/java/ql/src/Likely Bugs/Inheritance/NoNonFinalInConstructor.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContainerSizeCmpZero.ql ql/java/ql/src/Likely Bugs/Likely Typos/ContradictoryTypeChecks.ql diff --git a/java/ql/src/Likely Bugs/Frameworks/JUnit/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.md b/java/ql/src/Likely Bugs/Frameworks/JUnit/ExcessivePublicMethodMocking.md similarity index 89% rename from java/ql/src/Likely Bugs/Frameworks/JUnit/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.md rename to java/ql/src/Likely Bugs/Frameworks/JUnit/ExcessivePublicMethodMocking.md index b0f2f8d1aa7..d932df25116 100644 --- a/java/ql/src/Likely Bugs/Frameworks/JUnit/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.md +++ b/java/ql/src/Likely Bugs/Frameworks/JUnit/ExcessivePublicMethodMocking.md @@ -1,6 +1,6 @@ ## Overview -Mocking methods of a class is necessary for unit tests to run without overhead caused by expensive I/O operations. However, when a unit test ends up mocking all non-private methods of a class, it may indicate that the test is too complicated, possibly because it is trying to test multiple things at once. Such extensive mocking is likely a signal that the scope of the unit test is reaching beyond a single unit of functionality. +Mocking methods of a class is necessary for unit tests to run without overhead caused by expensive I/O operations. However, when a unit test ends up mocking all public methods of a class, it may indicate that the test is too complicated, possibly because it is trying to test multiple things at once. Such extensive mocking is likely a signal that the scope of the unit test is reaching beyond a single unit of functionality. ## Recommendation diff --git a/java/ql/src/Likely Bugs/Frameworks/JUnit/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.ql b/java/ql/src/Likely Bugs/Frameworks/JUnit/ExcessivePublicMethodMocking.ql similarity index 90% rename from java/ql/src/Likely Bugs/Frameworks/JUnit/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.ql rename to java/ql/src/Likely Bugs/Frameworks/JUnit/ExcessivePublicMethodMocking.ql index f7a75aa94fe..5c61cd23979 100644 --- a/java/ql/src/Likely Bugs/Frameworks/JUnit/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.ql +++ b/java/ql/src/Likely Bugs/Frameworks/JUnit/ExcessivePublicMethodMocking.ql @@ -1,7 +1,8 @@ /** - * @id java/mocking-all-non-private-methods-means-unit-test-is-too-big - * @name Mocking all non-private methods of a class may indicate the unit test is testing too much - * @description Mocking all non-private methods provided by a class might indicate the unit test + * @id java/excessive-public-method-mocking + * @previous-id java/mocking-all-non-private-methods-means-unit-test-is-too-big + * @name Mocking all public methods of a class may indicate the unit test is testing too much + * @description Mocking all public methods provided by a class might indicate the unit test * aims to test too many things. * @kind problem * @precision high diff --git a/java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/Employee.java b/java/ql/test/query-tests/ExcessivePublicMethodMocking/Employee.java similarity index 100% rename from java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/Employee.java rename to java/ql/test/query-tests/ExcessivePublicMethodMocking/Employee.java diff --git a/java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/EmployeeRecord.java b/java/ql/test/query-tests/ExcessivePublicMethodMocking/EmployeeRecord.java similarity index 100% rename from java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/EmployeeRecord.java rename to java/ql/test/query-tests/ExcessivePublicMethodMocking/EmployeeRecord.java diff --git a/java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/EmployeeStatus.java b/java/ql/test/query-tests/ExcessivePublicMethodMocking/EmployeeStatus.java similarity index 100% rename from java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/EmployeeStatus.java rename to java/ql/test/query-tests/ExcessivePublicMethodMocking/EmployeeStatus.java diff --git a/java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.expected b/java/ql/test/query-tests/ExcessivePublicMethodMocking/ExcessivePublicMethodMocking.expected similarity index 100% rename from java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.expected rename to java/ql/test/query-tests/ExcessivePublicMethodMocking/ExcessivePublicMethodMocking.expected diff --git a/java/ql/test/query-tests/ExcessivePublicMethodMocking/ExcessivePublicMethodMocking.qlref b/java/ql/test/query-tests/ExcessivePublicMethodMocking/ExcessivePublicMethodMocking.qlref new file mode 100644 index 00000000000..4e599773e32 --- /dev/null +++ b/java/ql/test/query-tests/ExcessivePublicMethodMocking/ExcessivePublicMethodMocking.qlref @@ -0,0 +1,2 @@ +query: Likely Bugs/Frameworks/JUnit/ExcessivePublicMethodMocking.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/TestORM.java b/java/ql/test/query-tests/ExcessivePublicMethodMocking/TestORM.java similarity index 100% rename from java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/TestORM.java rename to java/ql/test/query-tests/ExcessivePublicMethodMocking/TestORM.java diff --git a/java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/options b/java/ql/test/query-tests/ExcessivePublicMethodMocking/options similarity index 100% rename from java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/options rename to java/ql/test/query-tests/ExcessivePublicMethodMocking/options diff --git a/java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.qlref b/java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.qlref deleted file mode 100644 index 6d22c90940b..00000000000 --- a/java/ql/test/query-tests/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.qlref +++ /dev/null @@ -1,2 +0,0 @@ -query: Likely Bugs/Frameworks/JUnit/MockingAllNonPrivateMethodsMeansUnitTestIsTooBig.ql -postprocess: utils/test/InlineExpectationsTestQuery.ql