-
Notifications
You must be signed in to change notification settings - Fork 45
Closed
Labels
ctg-bugIssue is a bugIssue is a bugspec-release-tailingsFailed to include in the current release, let's include it in the next oneFailed to include in the current release, let's include it in the next one
Milestone
Description
Description
Test generation for Functional interfaces defined as class members - fails with InaccessibleObjectException from constructCompositeModel
To Reproduce
Steps to reproduce the behavior:
- Open IntelliJ IDEA
- Plugin is installed
- Create a new project with JDK 8
- Add a class LambdaVarExample (see below)
- Run test generation
- Repeat 3-5 steps for a project with JDK 11
import java.util.function.Predicate;
public class LambdaVarExample {
private Predicate<? super String> byCondition = l -> l.contains("b");
public void runTest(String input) {
if (byCondition.test(input)) {
firstScenario();
} else {
secondScenario();
}
}
private void firstScenario() {
System.out.println("1");
}
private void secondScenario() {
System.out.println("2");
}
}
Expected behavior
5-6. Tests are supposed to be generated without errors.
Actual behavior
An error test is generated with information about...
5. JDK 8 - ClassNotFoundException in concrete...
6. JDK 11 - InaccessibleObjectException in constructCompositeModel.
Visual proofs (screenshots, logs, images)
- JDK 8 error:
public void testRunTest_errors() {
// Couldn't generate some tests. List of errors:
//
// 1 occurrences of:
// Default concrete execution failed
// 1 occurrences of:
/* Error in the child process |> java.lang.ClassNotFoundException: jdk.internal.logger.SimpleConsoleLogger$CallerFinder
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at org.utbot.instrumentation.process.HandlerClassesLoader.loadClass(ChildProcess.kt:38)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.utbot.framework.concrete.MockValueConstructor.kClass(MockValueConstructor.kt:470)
at org.utbot.framework.concrete.MockValueConstructor.javaClass(MockValueConstructor.kt:455)
at org.utbot.framework.concrete.MockValueConstructor.constructObject(MockValueConstructor.kt:158)
at org.utbot.framework.concrete.MockValueConstructor.construct(MockValueConstructor.kt:127)
at org.utbot.framework.concrete.MockValueConstructor.constructObject(MockValueConstructor.kt:184)
at org.utbot.framework.concrete.MockValueConstructor.construct(MockValueConstructor.kt:127)
at org.utbot.framework.concrete.MockValueConstructor.constructMethodParameters(MockValueConstructor.kt:104)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:144)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:107)
at org.utbot.instrumentation.process.ChildProcessKt.loop(ChildProcess.kt:133)
at org.utbot.instrumentation.process.ChildProcessKt.main(ChildProcess.kt:77)
at org.utbot.instrumentation.process.ChildProcessKt.main(ChildProcess.kt)
*/
}
- JDK 11 error:
public void testRunTest_errors() {
// Couldn't generate some tests. List of errors:
//
// 1 occurrences of:
/* Error in the child process |> java.lang.reflect.InaccessibleObjectException: Unable to make
field private boolean jdk.internal.logger.SimpleConsoleLogger$CallerFinder.lookingForLogger accessible: module java.base does not "opens
jdk.internal.logger" to unnamed module @29e6eb25
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:176)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:170)
at org.utbot.framework.concrete.UtModelConstructor.constructCompositeModel(UtModelConstructor.kt:356)
at org.utbot.framework.concrete.UtModelConstructor.constructFromAny(UtModelConstructor.kt:239)
at org.utbot.framework.concrete.UtModelConstructor.construct(UtModelConstructor.kt:107)
at org.utbot.framework.concrete.UtModelConstructor.constructCompositeModel(UtModelConstructor.kt:285)
at org.utbot.framework.concrete.UtModelConstructor.constructFromAny(UtModelConstructor.kt:239)
at org.utbot.framework.concrete.UtModelConstructor.construct(UtModelConstructor.kt:107)
at org.utbot.framework.concrete.UtExecutionInstrumentation$invoke$$inlined$withReflection$lambda$1.invoke(UtExecutionInstrumentation.kt:179)
at org.utbot.framework.concrete.UtExecutionInstrumentation$invoke$$inlined$withReflection$lambda$1.invoke(UtExecutionInstrumentation.kt:107)
at org.utbot.framework.concrete.UtExecutionInstrumentation.withStaticFields(UtExecutionInstrumentation.kt:269)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:153)
at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:107)
at org.utbot.instrumentation.process.ChildProcessKt.loop(ChildProcess.kt:133)
at org.utbot.instrumentation.process.ChildProcessKt.main(ChildProcess.kt:77)
at org.utbot.instrumentation.process.ChildProcessKt.main(ChildProcess.kt)
*/
}
Environment
Windows 10 Pro
IntelliJ IDEA 2022.1.3
JDK 8, 11
One of the latest plugin build: https://github.com/UnitTestBot/UTBotJava/actions/runs/2621106151
Metadata
Metadata
Assignees
Labels
ctg-bugIssue is a bugIssue is a bugspec-release-tailingsFailed to include in the current release, let's include it in the next oneFailed to include in the current release, let's include it in the next one
Type
Projects
Status
Done