On Thu, 22 Oct 2020 11:45:08 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

> The test targets in `build.gradle` are set up to run only classes whose name 
> ends with exactly `Test`. A test class named `RunMyTest.java` will be run, 
> but a test called `CheckSomething.java` will not be. This was done because 
> gradle's built-in scanner for test classes was buggy in earlier versions of 
> gradle. It seems to have been fixed in the gradle 3.x time frame from what I 
> can tell.
> 
> The current approach leads to two problems. The first is that gradle will try 
> to execute  all classes named `XxxxxTest.java` whether or not it should. 
> Attempting to execute utility classes without test methods (meaning without 
> at least one method annotated with `@Test`) or `abstract` classes (whether or 
> not there are any test methods) will fail.
> 
> The second is that a test class that isn't named `XxxxxTest.java` will not be 
> run, even if it contains `@Test` methods. This can (and has) lead to tests 
> being skipped when they should be run.
> 
> The solution is to enable gradle's built-in scanning for test classes which 
> works exactly like you would expect it to: it runs any concrete class that 
> has at least one `@Test` method or whose parent class has such a method. This 
> means that a class with no test methods that subclasses an abstract class 
> with `@Test` methods will be run correctly.
> 
> I ran a full test on all three platforms. The following test classes which 
> were formerly not run are now run:
> 
> modules/javafx.base: test.javafx.collections.ObservableListWithExtractor : 52 
> tests
> modules/javafx.base: test.javafx.event.EventSerializationEventExists 0 tests 
> (*)
> modules/javafx.controls:. test.javafx.scene.control.MiscellaneousTests : 3 
> tests
> tests/system: test.com.sun.javafx.application.SwingNoExit : 1 test
> 
> They pass on all three platforms.
> 
> (*) - There is only one test in this class and it is currently `@Ignore`d

Looks good to me, verified that tests in files which are not suffixed with 
`Test` get executed now.
buildSrc/build.gradle file also has the code that we are changing here,
scanForTestClasses = false
include "**/*Test.*"
I think it won't affect as there are no tests there.

-------------

Marked as reviewed by arapte (Reviewer).

PR: https://git.openjdk.java.net/jfx/pull/329

Reply via email to