Details
-
Improvement
-
Status: Closed
-
Critical
-
Resolution: Done
-
2.22.1, 3.0.0-M2
-
None
Description
org.junit.platform.engine.discovery.DiscoverySelectors#selectClass(java.lang.String) and org.junit.platform.engine.discovery.DiscoverySelectors#selectClass(java.lang.Class<?>) are different.
If you use selectClass(java.lang.String) , it will load class by org.junit.platform.engine.discovery.ClassSelector#getJavaClass. The code is as follow:
{{public Class<?> getJavaClass() { if (this.javaClass == null)
{ this.javaClass = ReflectionUtils.loadClass(this.className).orElseThrow( () -> new PreconditionViolationException("Could not load class with name: " + this.className)); }return this.javaClass; } }}
And the classloader fetched by Thread.currentThread().getContextClassLoader() will load this class. In this way, it will delay loading class
But selectClass(java.lang.Class<?>) will get class directly.
In my situation, I need load Class by another classLoader so i need to delay loading testClass.
Attachments
Issue Links
- links to