From 19ee31c6e78f777847a71bd974acfc242368b9fd Mon Sep 17 00:00:00 2001 From: Vyacheslav Tamarin Date: Thu, 1 Jun 2023 08:23:28 +0300 Subject: [PATCH 1/2] Change testFramework saving to config-file --- .../language/python/PythonDialogWindow.kt | 5 ++++- .../settings/PythonTestFrameworkMapper.kt | 16 ++++++++++++++++ .../plugin/language/python/settings/Settings.kt | 2 +- .../plugin/settings/JavaTestFrameworkMapper.kt | 17 +++++++++++++++++ .../utbot/intellij/plugin/settings/Settings.kt | 2 +- .../plugin/ui/GenerateTestsDialogWindow.kt | 7 +++++-- .../intellij/plugin/settings/CommonSettings.kt | 7 ++++--- .../plugin/settings/TestFrameworkMapper.kt | 8 ++++++++ 8 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/PythonTestFrameworkMapper.kt create mode 100644 utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/JavaTestFrameworkMapper.kt create mode 100644 utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/TestFrameworkMapper.kt diff --git a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/PythonDialogWindow.kt b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/PythonDialogWindow.kt index 5f6cb1a165..408f72ac5f 100644 --- a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/PythonDialogWindow.kt +++ b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/PythonDialogWindow.kt @@ -16,6 +16,7 @@ import com.jetbrains.python.psi.PyClass import com.jetbrains.python.psi.PyFunction import org.utbot.framework.codegen.domain.ProjectType import org.utbot.framework.codegen.domain.TestFramework +import org.utbot.intellij.plugin.language.python.settings.PythonTestFrameworkMapper import org.utbot.intellij.plugin.language.python.settings.loadStateFromModel import org.utbot.intellij.plugin.language.python.table.UtPyClassItem import org.utbot.intellij.plugin.language.python.table.UtPyFunctionItem @@ -94,7 +95,9 @@ class PythonDialogWindow(val model: PythonTestsModel) : DialogWrapper(model.proj val settings = model.project.service() val installedTestFramework = TestFramework.allItems.singleOrNull { it.isInstalled } - currentFrameworkItem = installedTestFramework ?: settings.testFramework + val testFramework = PythonTestFrameworkMapper.fromString(settings.testFramework) +// val testFramework = settings.testFrameworkWithMapper(PythonTestFrameworkMapper) + currentFrameworkItem = installedTestFramework ?: testFramework updateTestFrameworksList() } diff --git a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/PythonTestFrameworkMapper.kt b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/PythonTestFrameworkMapper.kt new file mode 100644 index 0000000000..833cabbad0 --- /dev/null +++ b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/PythonTestFrameworkMapper.kt @@ -0,0 +1,16 @@ +package org.utbot.intellij.plugin.language.python.settings + +import org.utbot.framework.codegen.domain.TestFramework +import org.utbot.intellij.plugin.settings.TestFrameworkMapper +import org.utbot.python.framework.codegen.model.Pytest +import org.utbot.python.framework.codegen.model.Unittest + +object PythonTestFrameworkMapper: TestFrameworkMapper { + override fun toString(value: TestFramework): String = value.id + + override fun fromString(value: String): TestFramework = when (value) { + Unittest.id -> Unittest + Pytest.id -> Pytest + else -> Unittest + } +} \ No newline at end of file diff --git a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/Settings.kt b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/Settings.kt index 931a462a6e..6ba7fffd60 100644 --- a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/Settings.kt +++ b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/Settings.kt @@ -10,7 +10,7 @@ fun loadStateFromModel(settings: Settings, model: PythonTestsModel) { private fun fromGenerateTestsModel(model: PythonTestsModel): Settings.State { return Settings.State( sourceRootHistory = model.sourceRootHistory, - testFramework = model.testFramework, + testFramework = PythonTestFrameworkMapper.toString(model.testFramework), generationTimeoutInMillis = model.timeout, enableExperimentalLanguagesSupport = true, ) diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/JavaTestFrameworkMapper.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/JavaTestFrameworkMapper.kt new file mode 100644 index 0000000000..c3e127f90a --- /dev/null +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/JavaTestFrameworkMapper.kt @@ -0,0 +1,17 @@ +package org.utbot.intellij.plugin.settings + +import org.utbot.framework.codegen.domain.Junit4 +import org.utbot.framework.codegen.domain.Junit5 +import org.utbot.framework.codegen.domain.TestFramework +import org.utbot.framework.codegen.domain.TestNg + +object JavaTestFrameworkMapper: TestFrameworkMapper { + override fun toString(value: TestFramework): String = value.id + + override fun fromString(value: String): TestFramework = when (value) { + Junit4.id -> Junit4 + Junit5.id -> Junit5 + TestNg.id -> TestNg + else -> TestFramework.defaultItem + } +} \ No newline at end of file diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/Settings.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/Settings.kt index a47dab6c7d..edfa8ed900 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/Settings.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/Settings.kt @@ -13,7 +13,7 @@ private fun fromGenerateTestsModel(model: GenerateTestsModel): Settings.State { return Settings.State( sourceRootHistory = model.sourceRootHistory, codegenLanguage = model.codegenLanguage, - testFramework = model.testFramework, + testFramework = JavaTestFrameworkMapper.toString(model.testFramework), mockStrategy = model.mockStrategy, mockFramework = model.mockFramework ?: MockFramework.defaultItem, staticsMocking = model.staticsMocking, diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt index 185824a927..967c4dbb25 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt @@ -114,6 +114,7 @@ import org.utbot.intellij.plugin.models.springBootTestLibraryDescriptor import org.utbot.intellij.plugin.models.springTestLibraryDescriptor import org.utbot.intellij.plugin.models.testNgNewLibraryDescriptor import org.utbot.intellij.plugin.models.testNgOldLibraryDescriptor +import org.utbot.intellij.plugin.settings.JavaTestFrameworkMapper import org.utbot.intellij.plugin.settings.Settings import org.utbot.intellij.plugin.settings.loadStateFromModel import org.utbot.intellij.plugin.ui.components.CodeGenerationSettingItemRenderer @@ -851,10 +852,12 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m codegenLanguages.item = model.codegenLanguage val installedTestFramework = TestFramework.allItems.singleOrNull { it.isInstalled } + val testFramework = JavaTestFrameworkMapper.fromString(settings.testFramework) +// val testFramework = settings.testFrameworkWithMapper(JavaTestFrameworkMapper) currentFrameworkItem = when (parametrizedTestSources.isSelected) { - false -> installedTestFramework ?: settings.testFramework + false -> installedTestFramework ?: testFramework true -> installedTestFramework - ?: if (settings.testFramework != Junit4) settings.testFramework else TestFramework.parametrizedDefaultItem + ?: if (testFramework != Junit4) testFramework else TestFramework.parametrizedDefaultItem } springTestsType.item = if (isSpringConfigSelected()) settings.springTestsType else SpringTestsType.defaultItem diff --git a/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/CommonSettings.kt b/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/CommonSettings.kt index 3b33253091..22e1f34ad4 100644 --- a/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/CommonSettings.kt +++ b/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/CommonSettings.kt @@ -47,8 +47,8 @@ class Settings(val project: Project) : PersistentStateComponent data class State( var sourceRootHistory: MutableList = mutableListOf(), var codegenLanguage: CodegenLanguage = CodegenLanguage.defaultItem, - @OptionTag(converter = TestFrameworkConverter::class) - var testFramework: TestFramework = TestFramework.defaultItem, +// @OptionTag(converter = TestFrameworkConverter::class) + var testFramework: String = TestFramework.defaultItem.id, var mockStrategy: MockStrategyApi = MockStrategyApi.defaultItem, var mockFramework: MockFramework = MockFramework.defaultItem, @OptionTag(converter = StaticsMockingConverter::class) @@ -127,7 +127,8 @@ class Settings(val project: Project) : PersistentStateComponent val codegenLanguage: CodegenLanguage get() = state.codegenLanguage - val testFramework: TestFramework get() = state.testFramework + val testFramework: String get() = state.testFramework + fun testFrameworkWithMapper(mapper: TestFrameworkMapper): TestFramework = mapper.fromString(state.testFramework) val mockStrategy: MockStrategyApi get() = state.mockStrategy diff --git a/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/TestFrameworkMapper.kt b/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/TestFrameworkMapper.kt new file mode 100644 index 0000000000..c92685b0e7 --- /dev/null +++ b/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/TestFrameworkMapper.kt @@ -0,0 +1,8 @@ +package org.utbot.intellij.plugin.settings + +import org.utbot.framework.codegen.domain.TestFramework + +interface TestFrameworkMapper { + fun toString(value: TestFramework): String + fun fromString(value: String): TestFramework +} \ No newline at end of file From 58b11036746e2cec9953efd01e3fcaac6b9b1335 Mon Sep 17 00:00:00 2001 From: Vyacheslav Tamarin Date: Thu, 1 Jun 2023 14:55:13 +0300 Subject: [PATCH 2/2] Update TestFramework loading --- .../utbot/framework/codegen/domain/Domain.kt | 23 +++++++++++++++++++ .../language/python/PythonDialogWindow.kt | 5 ++-- .../settings/PythonTestFrameworkMapper.kt | 17 +++++++++++++- .../language/python/settings/Settings.kt | 2 +- .../settings/JavaTestFrameworkMapper.kt | 15 ++++++++++-- .../intellij/plugin/settings/Settings.kt | 2 +- .../plugin/ui/GenerateTestsDialogWindow.kt | 3 +-- .../plugin/settings/CommonSettings.kt | 12 +++++----- .../plugin/settings/TestFrameworkMapper.kt | 1 + 9 files changed, 64 insertions(+), 16 deletions(-) diff --git a/utbot-framework/src/main/kotlin/org/utbot/framework/codegen/domain/Domain.kt b/utbot-framework/src/main/kotlin/org/utbot/framework/codegen/domain/Domain.kt index 836f26faba..3b82df3436 100644 --- a/utbot-framework/src/main/kotlin/org/utbot/framework/codegen/domain/Domain.kt +++ b/utbot-framework/src/main/kotlin/org/utbot/framework/codegen/domain/Domain.kt @@ -256,6 +256,29 @@ abstract class TestFramework( } } +class UnknownTestFramework(id: String) : TestFramework(id = id, displayName = id) { + override val mainPackage: String = id + override val assertionsClass: ClassId = ClassId(id) + override val arraysAssertionsClass: ClassId = ClassId(id) + override val kotlinFailureAssertionsClass: ClassId = ClassId(id) + override val testAnnotationId: ClassId = ClassId(id) + override val beforeMethodId: ClassId = ClassId(id) + override val afterMethodId: ClassId = ClassId(id) + override val parameterizedTestAnnotationId: ClassId = ClassId(id) + override val methodSourceAnnotationId: ClassId = ClassId(id) + override val nestedClassesShouldBeStatic: Boolean = false + override val argListClassId: ClassId = ClassId(id) + + override fun getRunTestsCommand( + executionInvoke: String, + classPath: String, + classesNames: List, + buildDirectory: String, + additionalArguments: List + ): List = emptyList() + +} + object TestNg : TestFramework(id = "TestNG",displayName = "TestNG") { override val mainPackage: String = TEST_NG_PACKAGE diff --git a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/PythonDialogWindow.kt b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/PythonDialogWindow.kt index 408f72ac5f..7f349c0cfd 100644 --- a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/PythonDialogWindow.kt +++ b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/PythonDialogWindow.kt @@ -94,9 +94,8 @@ class PythonDialogWindow(val model: PythonTestsModel) : DialogWrapper(model.proj private fun initDefaultValues() { val settings = model.project.service() - val installedTestFramework = TestFramework.allItems.singleOrNull { it.isInstalled } - val testFramework = PythonTestFrameworkMapper.fromString(settings.testFramework) -// val testFramework = settings.testFrameworkWithMapper(PythonTestFrameworkMapper) + val installedTestFramework = PythonTestFrameworkMapper.allItems.singleOrNull { it.isInstalled } + val testFramework = PythonTestFrameworkMapper.handleUnknown(settings.testFramework) currentFrameworkItem = installedTestFramework ?: testFramework updateTestFrameworksList() diff --git a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/PythonTestFrameworkMapper.kt b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/PythonTestFrameworkMapper.kt index 833cabbad0..57d8383441 100644 --- a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/PythonTestFrameworkMapper.kt +++ b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/PythonTestFrameworkMapper.kt @@ -2,6 +2,7 @@ package org.utbot.intellij.plugin.language.python.settings import org.utbot.framework.codegen.domain.TestFramework import org.utbot.intellij.plugin.settings.TestFrameworkMapper +import org.utbot.python.framework.codegen.PythonTestFrameworkManager import org.utbot.python.framework.codegen.model.Pytest import org.utbot.python.framework.codegen.model.Unittest @@ -11,6 +12,20 @@ object PythonTestFrameworkMapper: TestFrameworkMapper { override fun fromString(value: String): TestFramework = when (value) { Unittest.id -> Unittest Pytest.id -> Pytest - else -> Unittest + else -> error("Unknown TestFramework $value") } + + override fun handleUnknown(testFramework: TestFramework): TestFramework { + if (allItems.contains(testFramework)) { + return testFramework + } + return try { + fromString(testFramework.id) + } catch (ex: IllegalStateException) { + defaultItem + } + } + + val defaultItem: TestFramework get() = PythonTestFrameworkManager().defaultTestFramework + val allItems: List get() = PythonTestFrameworkManager().testFrameworks } \ No newline at end of file diff --git a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/Settings.kt b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/Settings.kt index 6ba7fffd60..931a462a6e 100644 --- a/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/Settings.kt +++ b/utbot-intellij-python/src/main/kotlin/org/utbot/intellij/plugin/language/python/settings/Settings.kt @@ -10,7 +10,7 @@ fun loadStateFromModel(settings: Settings, model: PythonTestsModel) { private fun fromGenerateTestsModel(model: PythonTestsModel): Settings.State { return Settings.State( sourceRootHistory = model.sourceRootHistory, - testFramework = PythonTestFrameworkMapper.toString(model.testFramework), + testFramework = model.testFramework, generationTimeoutInMillis = model.timeout, enableExperimentalLanguagesSupport = true, ) diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/JavaTestFrameworkMapper.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/JavaTestFrameworkMapper.kt index c3e127f90a..e3aee633cf 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/JavaTestFrameworkMapper.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/JavaTestFrameworkMapper.kt @@ -5,13 +5,24 @@ import org.utbot.framework.codegen.domain.Junit5 import org.utbot.framework.codegen.domain.TestFramework import org.utbot.framework.codegen.domain.TestNg -object JavaTestFrameworkMapper: TestFrameworkMapper { +object JavaTestFrameworkMapper : TestFrameworkMapper { override fun toString(value: TestFramework): String = value.id override fun fromString(value: String): TestFramework = when (value) { Junit4.id -> Junit4 Junit5.id -> Junit5 TestNg.id -> TestNg - else -> TestFramework.defaultItem + else -> error("Unknown TestFramework $value") + } + + override fun handleUnknown(testFramework: TestFramework): TestFramework { + if (TestFramework.allItems.contains(testFramework)) { + return testFramework + } + return try { + fromString(testFramework.id) + } catch (ex: IllegalStateException) { + TestFramework.defaultItem + } } } \ No newline at end of file diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/Settings.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/Settings.kt index edfa8ed900..a47dab6c7d 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/Settings.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/Settings.kt @@ -13,7 +13,7 @@ private fun fromGenerateTestsModel(model: GenerateTestsModel): Settings.State { return Settings.State( sourceRootHistory = model.sourceRootHistory, codegenLanguage = model.codegenLanguage, - testFramework = JavaTestFrameworkMapper.toString(model.testFramework), + testFramework = model.testFramework, mockStrategy = model.mockStrategy, mockFramework = model.mockFramework ?: MockFramework.defaultItem, staticsMocking = model.staticsMocking, diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt index 967c4dbb25..012d1814c6 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/GenerateTestsDialogWindow.kt @@ -852,8 +852,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m codegenLanguages.item = model.codegenLanguage val installedTestFramework = TestFramework.allItems.singleOrNull { it.isInstalled } - val testFramework = JavaTestFrameworkMapper.fromString(settings.testFramework) -// val testFramework = settings.testFrameworkWithMapper(JavaTestFrameworkMapper) + val testFramework = JavaTestFrameworkMapper.handleUnknown(settings.testFramework) currentFrameworkItem = when (parametrizedTestSources.isSelected) { false -> installedTestFramework ?: testFramework true -> installedTestFramework diff --git a/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/CommonSettings.kt b/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/CommonSettings.kt index 22e1f34ad4..edfec90095 100644 --- a/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/CommonSettings.kt +++ b/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/CommonSettings.kt @@ -36,6 +36,7 @@ import java.util.concurrent.CompletableFuture import kotlin.reflect.KClass import org.utbot.common.isWindows import org.utbot.framework.SummariesGenerationType +import org.utbot.framework.codegen.domain.UnknownTestFramework import org.utbot.framework.plugin.api.SpringTestsType import org.utbot.framework.plugin.api.isSummarizationCompatible @@ -47,8 +48,8 @@ class Settings(val project: Project) : PersistentStateComponent data class State( var sourceRootHistory: MutableList = mutableListOf(), var codegenLanguage: CodegenLanguage = CodegenLanguage.defaultItem, -// @OptionTag(converter = TestFrameworkConverter::class) - var testFramework: String = TestFramework.defaultItem.id, + @OptionTag(converter = TestFrameworkConverter::class) + var testFramework: TestFramework = TestFramework.defaultItem, var mockStrategy: MockStrategyApi = MockStrategyApi.defaultItem, var mockFramework: MockFramework = MockFramework.defaultItem, @OptionTag(converter = StaticsMockingConverter::class) @@ -127,8 +128,7 @@ class Settings(val project: Project) : PersistentStateComponent val codegenLanguage: CodegenLanguage get() = state.codegenLanguage - val testFramework: String get() = state.testFramework - fun testFrameworkWithMapper(mapper: TestFrameworkMapper): TestFramework = mapper.fromString(state.testFramework) + val testFramework: TestFramework get() = state.testFramework val mockStrategy: MockStrategyApi get() = state.mockStrategy @@ -253,13 +253,13 @@ class Settings(val project: Project) : PersistentStateComponent // use it to serialize testFramework in State private class TestFrameworkConverter : Converter() { - override fun toString(value: TestFramework): String = "$value" + override fun toString(value: TestFramework): String = value.id override fun fromString(value: String): TestFramework = when (value) { Junit4.id -> Junit4 Junit5.id -> Junit5 TestNg.id -> TestNg - else -> error("Unknown TestFramework $value") + else -> UnknownTestFramework(value) } } diff --git a/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/TestFrameworkMapper.kt b/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/TestFrameworkMapper.kt index c92685b0e7..79c290b82e 100644 --- a/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/TestFrameworkMapper.kt +++ b/utbot-ui-commons/src/main/kotlin/org/utbot/intellij/plugin/settings/TestFrameworkMapper.kt @@ -5,4 +5,5 @@ import org.utbot.framework.codegen.domain.TestFramework interface TestFrameworkMapper { fun toString(value: TestFramework): String fun fromString(value: String): TestFramework + fun handleUnknown(testFramework: TestFramework): TestFramework } \ No newline at end of file