Skip to content

Commit 186a0fb

Browse files
committed
Fix compilation after rebase and decouple Spring tests
1 parent 2269112 commit 186a0fb

File tree

9 files changed

+73
-71
lines changed

9 files changed

+73
-71
lines changed

utbot-spring-test/src/test/kotlin/org/utbot/examples/spring/autowiring/oneBeanForOneType/ServiceWithInjectedAndNonInjectedFieldTests.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,14 @@ import org.junit.jupiter.api.Test
44
import org.utbot.examples.spring.utils.findAllRepositoryCall
55
import org.utbot.examples.spring.utils.springAdditionalDependencies
66
import org.utbot.examples.spring.utils.springMockStrategy
7-
import org.utbot.examples.spring.utils.standardSpringTestingConfigurations
8-
import org.utbot.framework.plugin.api.MockStrategyApi
9-
import org.utbot.testcheckers.eq
107
import org.utbot.testing.DoNotCalculate
11-
import org.utbot.testing.UtValueTestCaseChecker
128
import org.utbot.testing.ignoreExecutionsNumber
139
import org.utbot.testing.isException
1410
import org.utbot.testing.singleMock
1511
import org.utbot.testing.value
1612

17-
internal class ServiceWithInjectedAndNonInjectedFieldTests: UtValueTestCaseChecker(
13+
internal class ServiceWithInjectedAndNonInjectedFieldTests : SpringNoConfigUtValueTestCaseChecker(
1814
testClass = ServiceWithInjectedAndNonInjectedField::class,
19-
configurations = standardSpringTestingConfigurations
2015
) {
2116
@Test
2217
fun testGetOrdersSize() {

utbot-spring-test/src/test/kotlin/org/utbot/examples/spring/autowiring/oneBeanForOneType/ServiceWithInjectedFieldTests.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,11 @@ import org.utbot.examples.spring.utils.findAllRepositoryCall
55
import org.utbot.examples.spring.utils.saveRepositoryCall
66
import org.utbot.examples.spring.utils.springAdditionalDependencies
77
import org.utbot.examples.spring.utils.springMockStrategy
8-
import org.utbot.examples.spring.utils.standardSpringTestingConfigurations
9-
import org.utbot.framework.plugin.api.MockStrategyApi
108
import org.utbot.testcheckers.eq
119
import org.utbot.testing.*
1210

13-
internal class ServiceWithInjectedFieldTests : UtValueTestCaseChecker(
11+
internal class ServiceWithInjectedFieldTests : SpringNoConfigUtValueTestCaseChecker(
1412
testClass = ServiceWithInjectedField::class,
15-
configurations = standardSpringTestingConfigurations
1613
) {
1714
@Test
1815
fun testGetOrders() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.utbot.examples.spring.autowiring.oneBeanForOneType
2+
3+
import org.utbot.examples.spring.utils.standardSpringTestingConfigurations
4+
import org.utbot.testing.UtValueTestCaseChecker
5+
import org.utbot.testing.springNoConfigApplicationContext
6+
import kotlin.reflect.KClass
7+
8+
abstract class SpringNoConfigUtValueTestCaseChecker(
9+
testClass: KClass<*>
10+
) : UtValueTestCaseChecker(
11+
testClass,
12+
configurations = standardSpringTestingConfigurations,
13+
applicationContext = springNoConfigApplicationContext
14+
)

utbot-spring-test/src/test/kotlin/org/utbot/examples/spring/utils/SpringTestingConfiguration.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ import org.springframework.data.repository.PagingAndSortingRepository
55
import org.utbot.framework.codegen.domain.ParametrizedTestSource
66
import org.utbot.framework.plugin.api.CodegenLanguage
77
import org.utbot.framework.plugin.api.MockStrategyApi
8-
import org.utbot.framework.plugin.api.SpringApplicationContext
9-
import org.utbot.framework.plugin.api.SpringSettings
10-
import org.utbot.framework.plugin.api.SpringTestType
118
import org.utbot.testing.SpringConfiguration
129
import org.utbot.testing.TestExecution
1310

utbot-testing/src/main/kotlin/org/utbot/testing/CodeGenerationIntegrationTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.junit.jupiter.api.fail
2222
import org.junit.jupiter.engine.descriptor.ClassTestDescriptor
2323
import org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor
2424
import org.utbot.framework.codegen.domain.ParametrizedTestSource
25+
import org.utbot.framework.context.ApplicationContext
2526
import java.nio.file.Path
2627

2728
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@@ -31,6 +32,7 @@ abstract class CodeGenerationIntegrationTest(
3132
private val testClass: KClass<*>,
3233
private var testCodeGeneration: Boolean = true,
3334
private val configurationsToTest: List<AbstractConfiguration>,
35+
private val applicationContext: ApplicationContext = defaultApplicationContext,
3436
) {
3537
private val testSets: MutableList<UtMethodTestSet> = arrayListOf()
3638

@@ -102,7 +104,7 @@ abstract class CodeGenerationIntegrationTest(
102104
)
103105

104106
val pipelineConfig = TestCodeGeneratorPipeline.configurePipeline(configuration)
105-
TestCodeGeneratorPipeline(pipelineConfig).runClassesCodeGenerationTests(classStages)
107+
TestCodeGeneratorPipeline(pipelineConfig, applicationContext).runClassesCodeGenerationTests(classStages)
106108
} catch (e: RuntimeException) {
107109
logger.warn(e) { "error in test pipeline" }
108110
pipelineErrors.add(e.message)

utbot-testing/src/main/kotlin/org/utbot/testing/Configurations.kt

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,56 @@ package org.utbot.testing
22

33
import org.utbot.framework.codegen.domain.ParametrizedTestSource
44
import org.utbot.framework.codegen.domain.ProjectType
5+
import org.utbot.framework.context.simple.SimpleApplicationContext
6+
import org.utbot.framework.context.simple.SimpleMockerContext
7+
import org.utbot.framework.context.spring.SpringApplicationContextImpl
58
import org.utbot.framework.plugin.api.CodegenLanguage
6-
import org.utbot.framework.plugin.api.SpringApplicationContext
9+
import org.utbot.framework.plugin.api.MockStrategyApi
710
import org.utbot.framework.plugin.api.SpringSettings
811
import org.utbot.framework.plugin.api.SpringTestType
912

10-
abstract class AbstractConfiguration(
11-
val projectType: ProjectType,
12-
open val language: CodegenLanguage,
13-
open val parametrizedTestSource: ParametrizedTestSource,
14-
open val lastStage: Stage,
15-
)
13+
interface AbstractConfiguration {
14+
val projectType: ProjectType
15+
val mockStrategy: MockStrategyApi
16+
val language: CodegenLanguage
17+
val parametrizedTestSource: ParametrizedTestSource
18+
val lastStage: Stage
19+
}
1620

1721
data class Configuration(
1822
override val language: CodegenLanguage,
1923
override val parametrizedTestSource: ParametrizedTestSource,
2024
override val lastStage: Stage,
21-
): AbstractConfiguration(ProjectType.PureJvm, language, parametrizedTestSource, lastStage)
25+
): AbstractConfiguration {
26+
override val projectType: ProjectType
27+
get() = ProjectType.PureJvm
28+
29+
override val mockStrategy: MockStrategyApi
30+
get() = MockStrategyApi.defaultItem
31+
}
2232

2333
data class SpringConfiguration(
2434
override val language: CodegenLanguage,
2535
override val parametrizedTestSource: ParametrizedTestSource,
2636
override val lastStage: Stage,
27-
): AbstractConfiguration(ProjectType.Spring, language, parametrizedTestSource, lastStage)
37+
): AbstractConfiguration {
38+
override val projectType: ProjectType
39+
get() = ProjectType.Spring
40+
41+
override val mockStrategy: MockStrategyApi
42+
get() = MockStrategyApi.springDefaultItem
43+
}
2844

29-
val defaultSpringApplicationContext = SpringApplicationContext(
30-
mockInstalled = true,
31-
staticsMockingIsConfigured = true,
32-
shouldUseImplementors = false,
45+
val defaultApplicationContext = SimpleApplicationContext(
46+
SimpleMockerContext(
47+
mockFrameworkInstalled = true,
48+
staticsMockingIsConfigured = true,
49+
)
50+
)
51+
52+
val springNoConfigApplicationContext = SpringApplicationContextImpl(
53+
delegateContext = defaultApplicationContext,
3354
springTestType = SpringTestType.UNIT_TEST,
34-
springSettings = SpringSettings.AbsentSpringSettings(),
35-
)
55+
springSettings = SpringSettings.AbsentSpringSettings,
56+
beanDefinitions = emptyList()
57+
)

utbot-testing/src/main/kotlin/org/utbot/testing/TestCodeGeneratorPipeline.kt

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,13 @@ import org.utbot.common.info
88
import org.utbot.framework.codegen.generator.CodeGeneratorResult
99
import org.utbot.framework.codegen.domain.ForceStaticMocking
1010
import org.utbot.framework.codegen.domain.ParametrizedTestSource
11-
import org.utbot.framework.codegen.domain.ProjectType
1211
import org.utbot.framework.codegen.domain.StaticsMocking
1312
import org.utbot.framework.codegen.domain.TestFramework
14-
import org.utbot.framework.codegen.generator.CodeGenerator
15-
import org.utbot.framework.codegen.generator.SpringCodeGenerator
13+
import org.utbot.framework.codegen.generator.CodeGeneratorParams
1614
import org.utbot.framework.codegen.services.language.CgLanguageAssistant
1715
import org.utbot.framework.codegen.tree.ututils.UtilClassKind
1816
import org.utbot.framework.codegen.tree.ututils.UtilClassKind.Companion.UT_UTILS_INSTANCE_NAME
17+
import org.utbot.framework.context.ApplicationContext
1918
import org.utbot.framework.plugin.api.*
2019
import org.utbot.framework.plugin.api.util.UtContext
2120
import org.utbot.framework.plugin.api.util.description
@@ -27,7 +26,10 @@ import kotlin.reflect.KClass
2726

2827
internal val logger = KotlinLogging.logger {}
2928

30-
class TestCodeGeneratorPipeline(private val testInfrastructureConfiguration: TestInfrastructureConfiguration) {
29+
class TestCodeGeneratorPipeline(
30+
private val testInfrastructureConfiguration: TestInfrastructureConfiguration,
31+
private val applicationContext: ApplicationContext
32+
) {
3133

3234
fun runClassesCodeGenerationTests(classesStages: ClassStages) {
3335
val pipeline = with(classesStages) {
@@ -252,10 +254,10 @@ class TestCodeGeneratorPipeline(private val testInfrastructureConfiguration: Tes
252254

253255
withUtContext(UtContext(classUnderTest.java.classLoader)) {
254256
val codeGenerator = with(testInfrastructureConfiguration) {
255-
when (projectType) {
256-
ProjectType.Spring -> SpringCodeGenerator(
257+
applicationContext.createCodeGenerator(
258+
CodeGeneratorParams(
257259
classUnderTest.id,
258-
projectType = ProjectType.Spring,
260+
projectType = projectType,
259261
generateUtilClassFile = generateUtilClassFile,
260262
paramNames = params,
261263
testFramework = testFramework,
@@ -267,25 +269,8 @@ class TestCodeGeneratorPipeline(private val testInfrastructureConfiguration: Tes
267269
parameterizedTestSource = parametrizedTestSource,
268270
runtimeExceptionTestsBehaviour = runtimeExceptionTestsBehaviour,
269271
enableTestsTimeout = enableTestsTimeout,
270-
springCodeGenerationContext = defaultSpringApplicationContext,
271272
)
272-
ProjectType.PureJvm -> CodeGenerator(
273-
classUnderTest.id,
274-
projectType = ProjectType.PureJvm,
275-
generateUtilClassFile = generateUtilClassFile,
276-
paramNames = params,
277-
testFramework = testFramework,
278-
staticsMocking = staticsMocking,
279-
forceStaticMocking = forceStaticMocking,
280-
generateWarningsForStaticMocking = false,
281-
codegenLanguage = codegenLanguage,
282-
cgLanguageAssistant = CgLanguageAssistant.getByCodegenLanguage(codegenLanguage),
283-
parameterizedTestSource = parametrizedTestSource,
284-
runtimeExceptionTestsBehaviour = runtimeExceptionTestsBehaviour,
285-
enableTestsTimeout = enableTestsTimeout
286-
)
287-
else -> error("Unsupported project type $projectType in code generator instantiation")
288-
}
273+
)
289274
}
290275
val testClassCustomName = "${classUnderTest.java.simpleName}GeneratedTest"
291276

@@ -331,10 +316,7 @@ class TestCodeGeneratorPipeline(private val testInfrastructureConfiguration: Tes
331316
testFramework = TestFramework.defaultItem,
332317
codegenLanguage = configuration.language,
333318
mockFramework = MockFramework.defaultItem,
334-
mockStrategy = when (configuration.projectType) {
335-
ProjectType.Spring -> MockStrategyApi.springDefaultItem
336-
else -> MockStrategyApi.defaultItem
337-
},
319+
mockStrategy = configuration.mockStrategy,
338320
staticsMocking = StaticsMocking.defaultItem,
339321
parametrizedTestSource = configuration.parametrizedTestSource,
340322
forceStaticMocking = ForceStaticMocking.defaultItem,

utbot-testing/src/main/kotlin/org/utbot/testing/TestSpecificTestCaseGenerator.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@ import org.utbot.engine.UtBotSymbolicEngine
99
import org.utbot.engine.util.mockListeners.ForceMockListener
1010
import org.utbot.engine.util.mockListeners.ForceStaticMockListener
1111
import org.utbot.framework.UtSettings
12-
import org.utbot.framework.plugin.api.ApplicationContext
12+
import org.utbot.framework.context.ApplicationContext
1313
import org.utbot.framework.plugin.api.ClassId
1414
import org.utbot.framework.plugin.api.ExecutableId
1515
import org.utbot.framework.plugin.api.MockStrategyApi
16-
import org.utbot.framework.plugin.api.SpringApplicationContext
1716
import org.utbot.framework.plugin.api.TestCaseGenerator
1817
import org.utbot.framework.plugin.api.UtError
1918
import org.utbot.framework.plugin.api.UtExecution
@@ -37,7 +36,7 @@ class TestSpecificTestCaseGenerator(
3736
engineActions: MutableList<(UtBotSymbolicEngine) -> Unit> = mutableListOf(),
3837
isCanceled: () -> Boolean = { false },
3938
private val taintConfigurationProvider: TaintConfigurationProvider? = null,
40-
applicationContext: ApplicationContext = ApplicationContext(),
39+
applicationContext: ApplicationContext = defaultApplicationContext,
4140
): TestCaseGenerator(
4241
listOf(buildDir),
4342
classpath,

utbot-testing/src/main/kotlin/org/utbot/testing/UtValueTestCaseChecker.kt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ import org.utbot.engine.prettify
1111
import org.utbot.framework.SummariesGenerationType
1212
import org.utbot.framework.UtSettings
1313
import org.utbot.framework.UtSettings.daysLimitForTempFiles
14+
import org.utbot.framework.context.ApplicationContext
1415
import org.utbot.framework.coverage.Coverage
1516
import org.utbot.framework.coverage.counters
1617
import org.utbot.framework.coverage.methodCoverage
1718
import org.utbot.framework.coverage.toAtLeast
18-
import org.utbot.framework.plugin.api.ApplicationContext
1919
import org.utbot.framework.plugin.api.ClassId
2020
import org.utbot.framework.plugin.api.ExecutableId
2121
import org.utbot.framework.plugin.api.FieldId
@@ -26,9 +26,6 @@ import org.utbot.framework.plugin.api.MockStrategyApi
2626
import org.utbot.framework.plugin.api.MockStrategyApi.NO_MOCKS
2727
import org.utbot.framework.plugin.api.ObjectMockTarget
2828
import org.utbot.framework.plugin.api.ParameterMockTarget
29-
import org.utbot.framework.plugin.api.SpringApplicationContext
30-
import org.utbot.framework.plugin.api.SpringSettings
31-
import org.utbot.framework.plugin.api.SpringTestType
3229
import org.utbot.framework.plugin.api.UtCompositeModel
3330
import org.utbot.framework.plugin.api.UtConcreteValue
3431
import org.utbot.framework.plugin.api.UtInstrumentation
@@ -66,6 +63,7 @@ abstract class UtValueTestCaseChecker(
6663
testClass: KClass<*>,
6764
testCodeGeneration: Boolean = true,
6865
val configurations: List<AbstractConfiguration> = standardTestingConfigurations,
66+
val applicationContext: ApplicationContext = defaultApplicationContext,
6967
) : CodeGenerationIntegrationTest(testClass, testCodeGeneration, configurations) {
7068
// contains already analyzed by the engine methods
7169
private val analyzedMethods: MutableMap<MethodWithMockStrategy, MethodResult> = mutableMapOf()
@@ -2018,7 +2016,7 @@ abstract class UtValueTestCaseChecker(
20182016
)
20192017
val classStages = ClassStages(classUnderTest, stageStatusCheck, listOf(testSet))
20202018

2021-
TestCodeGeneratorPipeline(testInfrastructureConfiguration).runClassesCodeGenerationTests(classStages)
2019+
TestCodeGeneratorPipeline(testInfrastructureConfiguration, applicationContext).runClassesCodeGenerationTests(classStages)
20222020
}
20232021
}
20242022
}
@@ -2163,11 +2161,7 @@ abstract class UtValueTestCaseChecker(
21632161
buildInfo.buildDir,
21642162
buildInfo.dependencyPath,
21652163
System.getProperty("java.class.path"),
2166-
applicationContext = if (configurations.any { it is SpringConfiguration }) {
2167-
defaultSpringApplicationContext
2168-
} else {
2169-
ApplicationContext()
2170-
}
2164+
applicationContext = applicationContext
21712165
)
21722166
}
21732167

0 commit comments

Comments
 (0)