Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ClassNotFoundException: org.mockito.MockedConstruction$Context in some Gradle projects when generate tests with Fuzzing #2523

Closed
tyuldashev opened this issue Aug 16, 2023 · 1 comment · Fixed by #2556
Assignees
Labels
comp-fuzzing Issue is related to the fuzzing ctg-bug Issue is a bug spec-regression Regression status-verified Bug fix is verified

Comments

@tyuldashev
Copy link
Collaborator

Description
Fuzzing generation for org.utbot.examples.recursion.Recursion#vertexSum causes errors.

It seems specific to Gradle projects and reproducible not only in UTBot project.

To Reproduce

  1. Install UnitTestBot plugin built from main in IntelliJ IDEA
  2. Open UTBot project
  3. In settings set Fuzzing = 100%
  4. Generate tests for org.utbot.examples.recursion.Recursion#vertexSum

Expected behavior
Tests are generated.

Actual behavior
One error test is generated:

    public void testVertexSum_errors() {
        // Couldn't generate some tests. List of errors:
        // 
        // 1 occurrences of:
        // org.mockito.MockedConstruction$Context

    }

Screenshots, logs

Full exception in utbot-engine-current.log:

java.lang.ClassNotFoundException: org.mockito.MockedConstruction$Context
	at java.net.URLClassLoader.findClass(URLClassLoader.java:445) ~[?:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:587) ~[?:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
	at org.utbot.framework.plugin.api.util.IdUtilKt.getJClass(IdUtil.kt:104) ~[utbot-framework-api-2023.8.5065.jar:?]
	at org.utbot.framework.plugin.api.util.IdUtilKt.getEnclosingClass(IdUtil.kt:62) ~[utbot-framework-api-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.ConstructorUtilsKt.importIfNeeded(ConstructorUtils.kt:254) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.services.framework.MockitoStaticMocker.mockConstruction(MockFrameworkManager.kt:442) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.services.framework.MockitoStaticMocker.mockNewInstance(MockFrameworkManager.kt:271) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.services.framework.MockFrameworkManager.mockNewInstance(MockFrameworkManager.kt:152) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor.setupInstrumentation(CgMethodConstructor.kt:215) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor$createTestMethod$1$2$mainBody$1.invoke(CgMethodConstructor.kt:1463) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor$createTestMethod$1$2$mainBody$1.invoke(CgMethodConstructor.kt:1461) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor$createTestMethod$1$2.invoke(CgMethodConstructor.kt:1498) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor$createTestMethod$1$2.invoke(CgMethodConstructor.kt:1449) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContextOwner$block$1.invoke(CgContext.kt:260) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContextOwner$block$1.invoke(CgContext.kt:259) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContextOwner$DefaultImpls.withNameScope(CgContext.kt:365) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContext.withNameScope(CgContext.kt:480) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContextOwner$DefaultImpls.block(CgContext.kt:259) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContext.block(CgContext.kt:480) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor.block(CgMethodConstructor.kt) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor$testMethod$testMethod$1.invoke(CgMethodConstructor.kt:1947) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor$testMethod$testMethod$1.invoke(CgMethodConstructor.kt:1944) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.BuildersKt.buildTestMethod(Builders.kt:110) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor.testMethod(CgMethodConstructor.kt:1944) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor.testMethod$default(CgMethodConstructor.kt:1903) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor$createTestMethod$1.invoke(CgMethodConstructor.kt:1449) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor$createTestMethod$1.invoke(CgMethodConstructor.kt:1442) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor.withTestMethodScope(CgMethodConstructor.kt:1817) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgMethodConstructor.createTestMethod(CgMethodConstructor.kt:1442) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor$createTest$1.invoke(CgAbstractTestClassConstructor.kt:105) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor$createTest$1.invoke(CgAbstractTestClassConstructor.kt:104) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContextOwner$DefaultImpls.withExecutionIdScope(CgContext.kt:288) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContext.withExecutionIdScope(CgContext.kt:480) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor.withExecutionIdScope(CgAbstractTestClassConstructor.kt) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor.createTest(CgAbstractTestClassConstructor.kt:104) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor.constructTestSet(CgSimpleTestClassConstructor.kt:94) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor$constructTestClassBody$1$2.invoke(CgSimpleTestClassConstructor.kt:55) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor$constructTestClassBody$1$2.invoke(CgSimpleTestClassConstructor.kt:54) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContextOwner$DefaultImpls.withTestSetIdScope(CgContext.kt:283) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContext.withTestSetIdScope(CgContext.kt:480) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor.withTestSetIdScope(CgAbstractTestClassConstructor.kt) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor$constructTestClassBody$1.invoke(CgSimpleTestClassConstructor.kt:54) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor$constructTestClassBody$1.invoke(CgSimpleTestClassConstructor.kt:30) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.BuildersKt.buildClassBody(Builders.kt:75) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor.constructTestClassBody(CgSimpleTestClassConstructor.kt:30) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgSimpleTestClassConstructor.constructTestClassBody(CgSimpleTestClassConstructor.kt:27) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor$constructTestClass$1.invoke(CgAbstractTestClassConstructor.kt:72) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor$constructTestClass$1.invoke(CgAbstractTestClassConstructor.kt:63) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.BuildersKt.buildClass(Builders.kt:64) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor.constructTestClass(CgAbstractTestClassConstructor.kt:63) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor$construct$1$1.invoke(CgAbstractTestClassConstructor.kt:54) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor$construct$1$1.invoke(CgAbstractTestClassConstructor.kt:54) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContext.withTestClassScope(CgContext.kt:585) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor.withTestClassScope(CgAbstractTestClassConstructor.kt) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor$construct$1.invoke(CgAbstractTestClassConstructor.kt:54) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor$construct$1.invoke(CgAbstractTestClassConstructor.kt:53) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.BuildersKt.buildClassFile(Builders.kt:49) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.tree.CgAbstractTestClassConstructor.construct(CgAbstractTestClassConstructor.kt:53) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.generator.CodeGenerator.generate(CodeGenerator.kt:17) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.generator.AbstractCodeGenerator$generateAsStringWithTestReport$1$1.invoke(AbstractCodeGenerator.kt:48) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.generator.AbstractCodeGenerator$generateAsStringWithTestReport$1$1.invoke(AbstractCodeGenerator.kt:47) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.domain.context.CgContext.withTestClassFileScope(CgContext.kt:575) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.generator.AbstractCodeGenerator$generateAsStringWithTestReport$1.invoke(AbstractCodeGenerator.kt:47) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.generator.AbstractCodeGenerator$generateAsStringWithTestReport$1.invoke(AbstractCodeGenerator.kt:46) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.generator.AbstractCodeGenerator.withCustomContext(AbstractCodeGenerator.kt:75) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.generator.AbstractCodeGenerator.generateAsStringWithTestReport(AbstractCodeGenerator.kt:46) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.codegen.generator.AbstractCodeGenerator.generateAsStringWithTestReport$default(AbstractCodeGenerator.kt:41) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.process.EngineProcessMainKt$setup$5.invoke(EngineProcessMain.kt:156) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.framework.process.EngineProcessMainKt$setup$5.invoke(EngineProcessMain.kt:153) ~[utbot-framework-2023.8.5065.jar:?]
	at org.utbot.rd.IdleWatchdog$measureTimeForActiveCall$1$2$1.invoke(ClientProcessUtil.kt:115) ~[utbot-rd-2023.8.5065.jar:?]
	at org.utbot.rd.IdleWatchdog.wrapActive(ClientProcessUtil.kt:88) ~[utbot-rd-2023.8.5065.jar:?]
	at org.utbot.rd.IdleWatchdog$measureTimeForActiveCall$1.invoke(ClientProcessUtil.kt:114) ~[utbot-rd-2023.8.5065.jar:?]
	at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182) ~[rd-framework-2023.1.2.jar:?]
	at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182) ~[rd-framework-2023.1.2.jar:?]
	at com.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:362) ~[rd-framework-2023.1.2.jar:?]
	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57) ~[rd-framework-2023.1.2.jar:?]
	at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56) ~[rd-framework-2023.1.2.jar:?]
	at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:148) ~[rd-framework-2023.1.2.jar:?]
	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56) ~[rd-framework-2023.1.2.jar:?]
	at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:54) ~[rd-framework-2023.1.2.jar:?]
	at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase.queue$lambda-3(SingleThreadScheduler.kt:41) ~[rd-core-2023.1.2.jar:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
17:09:11.903 | INFO  | AbstractCodeGenerator     | Code generation phase finished at 17:09:11.903

Environment

IntelliJ IDEA version - 2023.2
Project - utbot or just copy sample to any other Java project
Plugin - 2023.8.5058

Additional context
There is no such error in 2023.1.5 with plugin from latest release 2023.3, so that's regression error.

@alisevych
Copy link
Member

IlyaMuravjov added a commit that referenced this issue Aug 29, 2023
…2523 (#2556)

* Let engine `utContext.classLoader` fallback to UtBot own class path

* Address minor comments from #2556
@github-project-automation github-project-automation bot moved this from Todo to Done in UTBot Java Aug 29, 2023
@tyuldashev tyuldashev added the status-verified Bug fix is verified label Sep 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp-fuzzing Issue is related to the fuzzing ctg-bug Issue is a bug spec-regression Regression status-verified Bug fix is verified
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

4 participants