@@ -116,6 +116,7 @@ import org.utbot.framework.util.Conflict
116
116
import org.utbot.intellij.plugin.models.GenerateTestsModel
117
117
import org.utbot.intellij.plugin.models.jUnit4LibraryDescriptor
118
118
import org.utbot.intellij.plugin.models.jUnit5LibraryDescriptor
119
+ import org.utbot.intellij.plugin.models.jUnit5ParametrizedTestsLibraryDescriptor
119
120
import org.utbot.intellij.plugin.models.mockitoCoreLibraryDescriptor
120
121
import org.utbot.intellij.plugin.models.packageName
121
122
import org.utbot.intellij.plugin.models.testNgLibraryDescriptor
@@ -125,6 +126,7 @@ import org.utbot.intellij.plugin.ui.utils.LibrarySearchScope
125
126
import org.utbot.intellij.plugin.ui.utils.addSourceRootIfAbsent
126
127
import org.utbot.intellij.plugin.ui.utils.allLibraries
127
128
import org.utbot.intellij.plugin.ui.utils.findFrameworkLibrary
129
+ import org.utbot.intellij.plugin.ui.utils.findParametrizedTestsLibrary
128
130
import org.utbot.intellij.plugin.ui.utils.getOrCreateTestResourcesPath
129
131
import org.utbot.intellij.plugin.ui.utils.isBuildWithGradle
130
132
import org.utbot.intellij.plugin.ui.utils.kotlinTargetPlatform
@@ -196,6 +198,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
196
198
197
199
TestFramework .allItems.forEach {
198
200
it.isInstalled = findFrameworkLibrary(model.project, model.testModule, it) != null
201
+ it.isParametrizedTestsConfigured = findParametrizedTestsLibrary(model.project, model.testModule, it) != null
199
202
}
200
203
MockFramework .allItems.forEach {
201
204
it.isInstalled = findFrameworkLibrary(model.project, model.testModule, it) != null
@@ -532,6 +535,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
532
535
configureTestFrameworkIfRequired()
533
536
configureMockFrameworkIfRequired()
534
537
configureStaticMockingIfRequired()
538
+ configureParametrizedTestsIfRequired()
535
539
536
540
super .doOKAction()
537
541
}
@@ -665,8 +669,14 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
665
669
// region configure frameworks
666
670
667
671
private fun configureTestFrameworkIfRequired () {
668
- if (! testFrameworks.item.isInstalled) {
672
+ val testFramework = testFrameworks.item
673
+ if (! testFramework.isInstalled) {
669
674
configureTestFramework()
675
+
676
+ // Configuring framework will configure parametrized tests automatically
677
+ // TODO: do something more general here
678
+ // Note: we can't just update isParametrizedTestsConfigured as before because project.allLibraries() won't be updated immediately
679
+ testFramework.isParametrizedTestsConfigured = true
670
680
}
671
681
672
682
model.conflictTriggers[Conflict .TestFrameworkConflict ] = TestFramework .allItems.count { it.isInstalled } > 1
@@ -684,6 +694,12 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
684
694
}
685
695
}
686
696
697
+ private fun configureParametrizedTestsIfRequired () {
698
+ if (parametrizedTestSources.item != ParametrizedTestSource .DO_NOT_PARAMETRIZE && ! testFrameworks.item.isParametrizedTestsConfigured) {
699
+ configureParametrizedTests()
700
+ }
701
+ }
702
+
687
703
private fun configureTestFramework () {
688
704
val selectedTestFramework = testFrameworks.item
689
705
@@ -742,6 +758,27 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m
742
758
}
743
759
}
744
760
761
+ private fun configureParametrizedTests () {
762
+ // TODO: currently first three declarations are copy-pasted from configureTestFramework(), maybe fix this somehow?
763
+ val selectedTestFramework = testFrameworks.item
764
+
765
+ val libraryInProject =
766
+ findFrameworkLibrary(model.project, model.testModule, selectedTestFramework, LibrarySearchScope .Project )
767
+ val versionInProject = libraryInProject?.libraryName?.parseVersion()
768
+
769
+ val libraryDescriptor: ExternalLibraryDescriptor ? = when (selectedTestFramework) {
770
+ Junit4 -> error(" Parametrized tests are not supported for JUnit 4" )
771
+ Junit5 -> jUnit5ParametrizedTestsLibraryDescriptor(versionInProject)
772
+ TestNg -> null // Parametrized tests come with TestNG by default
773
+ }
774
+
775
+ selectedTestFramework.isParametrizedTestsConfigured = true
776
+ libraryDescriptor?.let {
777
+ addDependency(model.testModule, it)
778
+ .onError { selectedTestFramework.isParametrizedTestsConfigured = false }
779
+ }
780
+ }
781
+
745
782
/* *
746
783
* Adds the dependency for selected framework via [JavaProjectModelModificationService].
747
784
*
0 commit comments