You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Tibor Digana (JIRA)" <ji...@apache.org> on 2019/05/22 14:16:00 UTC
[jira] [Assigned] (SUREFIRE-1647) When using junit5, delay loading
testClass and use myown classLoader
[ https://issues.apache.org/jira/browse/SUREFIRE-1647?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tibor Digana reassigned SUREFIRE-1647:
--------------------------------------
Assignee: Tibor Digana
> When using junit5, delay loading testClass and use myown classLoader
> ---------------------------------------------------------------------
>
> Key: SUREFIRE-1647
> URL: https://issues.apache.org/jira/browse/SUREFIRE-1647
> Project: Maven Surefire
> Issue Type: Improvement
> Components: JUnit 5.x support
> Affects Versions: 2.22.1, 3.0.0-M2
> Reporter: Shengli Cao
> Assignee: Tibor Digana
> Priority: Critical
> Fix For: 3.0.0-M4
>
>
> 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.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)