@@ -40,7 +40,6 @@ import org.utbot.framework.util.calculateSize
4040import org.utbot.framework.util.convertToAssemble
4141import org.utbot.framework.util.graph
4242import org.utbot.framework.util.sootMethod
43- import org.utbot.framework.plugin.api.SpringSettings.*
4443import org.utbot.fuzzer.*
4544import org.utbot.fuzzing.*
4645import org.utbot.fuzzing.providers.FieldValueProvider
@@ -388,9 +387,24 @@ class UtBotSymbolicEngine(
388387 val attemptsLimit = UtSettings .fuzzingMaxAttempts
389388 val names = graph.body.method.tags.filterIsInstance<ParamNamesTag >().firstOrNull()?.names ? : emptyList()
390389 var testEmittedByFuzzer = 0
390+
391+ if (applicationContext is SpringApplicationContext &&
392+ applicationContext.springTestType == SpringTestType .INTEGRATION_TEST &&
393+ applicationContext.getBeansAssignableTo(methodUnderTest.classId).isEmpty()) {
394+ val fullConfigDisplayName = (applicationContext.springSettings as ? SpringSettings .PresentSpringSettings )
395+ ?.configuration?.fullDisplayName
396+ val errorDescription = " No beans of type ${methodUnderTest.classId.name} are found. " +
397+ " Try choosing different Spring configuration or adding beans to $fullConfigDisplayName "
398+ emit(UtError (
399+ errorDescription,
400+ IllegalStateException (errorDescription)
401+ ))
402+ return @flow
403+ }
404+
391405 val valueProviders = ValueProvider .of(defaultValueProviders(defaultIdGenerator))
392406 .letIf(applicationContext is SpringApplicationContext
393- && applicationContext.springSettings is PresentSpringSettings
407+ && applicationContext.springTestType == SpringTestType . INTEGRATION_TEST
394408 ) { provider ->
395409 val relevantRepositories = concreteExecutor.getRelevantSpringRepositories(methodUnderTest.classId)
396410 logger.info { " Detected relevant repositories for class ${methodUnderTest.classId} : $relevantRepositories " }
@@ -413,8 +427,7 @@ class UtBotSymbolicEngine(
413427 val springBeanValueProvider = SpringBeanValueProvider (
414428 defaultIdGenerator,
415429 beanNameProvider = { classId ->
416- (applicationContext as SpringApplicationContext ).beanDefinitions
417- .filter { it.beanTypeName == classId.name }
430+ (applicationContext as SpringApplicationContext ).getBeansAssignableTo(classId)
418431 .map { it.beanName }
419432 },
420433 relevantRepositories = relevantRepositories
0 commit comments