diff --git a/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt b/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt index 7f0bbfb717..43fd1c1856 100644 --- a/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt +++ b/utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt @@ -155,7 +155,7 @@ object UtSettings : AbstractSettings( /** * Generate summaries using plugin's custom JavaDoc tags. */ - var useCustomJavaDocTags by getBooleanProperty(false) + var useCustomJavaDocTags by getBooleanProperty(true) /** * Enable the machine learning module to generate summaries for methods under test. diff --git a/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt b/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt index 43d2804ebb..7241c35849 100644 --- a/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt +++ b/utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt @@ -1167,6 +1167,27 @@ enum class TreatOverflowAsError( } } +enum class JavaDocCommentStyle( + override val displayName: String, + override val description: String +) : CodeGenerationSettingItem { + CUSTOM_JAVADOC_TAGS( + displayName = "Structured via custom Javadoc tags", + description = "Uses custom Javadoc tags to describe test's execution path." + ), + FULL_SENTENCE_WRITTEN( + displayName = "Plain text", + description = "Uses plain text to describe test's execution path." + ); + + override fun toString(): String = displayName + + companion object : CodeGenerationSettingBox { + override val defaultItem = if (UtSettings.useCustomJavaDocTags) CUSTOM_JAVADOC_TAGS else FULL_SENTENCE_WRITTEN + override val allItems = JavaDocCommentStyle.values().toList() + } +} + enum class MockFramework( override val displayName: String, override val description: String = "Use $displayName as mock framework", diff --git a/utbot-framework/src/main/kotlin/org/utbot/tests/infrastructure/UtValueTestCaseChecker.kt b/utbot-framework/src/main/kotlin/org/utbot/tests/infrastructure/UtValueTestCaseChecker.kt index c993a3aad0..716e4d66d8 100644 --- a/utbot-framework/src/main/kotlin/org/utbot/tests/infrastructure/UtValueTestCaseChecker.kt +++ b/utbot-framework/src/main/kotlin/org/utbot/tests/infrastructure/UtValueTestCaseChecker.kt @@ -87,6 +87,7 @@ abstract class UtValueTestCaseChecker( UtSettings.useAssembleModelGenerator = true UtSettings.saveRemainingStatesForConcreteExecution = false UtSettings.useFuzzing = false + UtSettings.useCustomJavaDocTags = false } // checks paramsBefore and result diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt index 0743387a89..c5e2f6e84f 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/generator/UtTestsDialogProcessor.kt @@ -54,6 +54,7 @@ import java.util.concurrent.TimeUnit import org.utbot.engine.util.mockListeners.ForceStaticMockListener import org.utbot.framework.PathSelectorType import org.utbot.framework.plugin.api.ExecutableId +import org.utbot.framework.plugin.api.JavaDocCommentStyle import org.utbot.framework.plugin.api.util.executableId import org.utbot.framework.plugin.services.WorkingDirService import org.utbot.intellij.plugin.models.packageName @@ -197,6 +198,8 @@ object UtTestsDialogProcessor { // set timeout for concrete execution and for generated tests UtSettings.concreteExecutionTimeoutInChildProcess = model.hangingTestsTimeout.timeoutMs + UtSettings.useCustomJavaDocTags = model.commentStyle == JavaDocCommentStyle.CUSTOM_JAVADOC_TAGS + val searchDirectory = ReadAction .nonBlocking { project.basePath?.let { Paths.get(it) } diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/models/GenerateTestsModel.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/models/GenerateTestsModel.kt index 091c09bae2..0aecbc8629 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/models/GenerateTestsModel.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/models/GenerateTestsModel.kt @@ -19,6 +19,7 @@ import com.intellij.openapi.vfs.newvfs.impl.FakeVirtualFile import com.intellij.psi.PsiClass import com.intellij.refactoring.util.classMembers.MemberInfo import org.jetbrains.kotlin.idea.core.getPackage +import org.utbot.framework.plugin.api.JavaDocCommentStyle import org.utbot.framework.util.ConflictTriggers import org.utbot.intellij.plugin.ui.utils.jdkVersion @@ -65,6 +66,7 @@ data class GenerateTestsModel( lateinit var hangingTestsTimeout: HangingTestsTimeout lateinit var forceStaticMocking: ForceStaticMocking lateinit var chosenClassesToMockAlways: Set + lateinit var commentStyle: JavaDocCommentStyle val conflictTriggers: ConflictTriggers = ConflictTriggers() 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 7d48ea460f..08eb5f7e67 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 @@ -25,6 +25,7 @@ import org.utbot.framework.codegen.TestNg import org.utbot.framework.plugin.api.ClassId import org.utbot.framework.plugin.api.CodeGenerationSettingItem import org.utbot.framework.plugin.api.CodegenLanguage +import org.utbot.framework.plugin.api.JavaDocCommentStyle import org.utbot.framework.plugin.api.MockFramework import org.utbot.framework.plugin.api.MockStrategyApi import org.utbot.framework.plugin.api.TreatOverflowAsError @@ -53,7 +54,8 @@ class Settings(val project: Project) : PersistentStateComponent var parametrizedTestSource: ParametrizedTestSource = ParametrizedTestSource.defaultItem, var classesToMockAlways: Array = Mocker.defaultSuperClassesToMockAlwaysNames.toTypedArray(), var fuzzingValue: Double = 0.05, - var runGeneratedTestsWithCoverage : Boolean = false, + var runGeneratedTestsWithCoverage: Boolean = false, + var commentStyle: JavaDocCommentStyle = JavaDocCommentStyle.defaultItem ) { constructor(model: GenerateTestsModel) : this( codegenLanguage = model.codegenLanguage, @@ -67,7 +69,8 @@ class Settings(val project: Project) : PersistentStateComponent parametrizedTestSource = model.parametrizedTestSource, classesToMockAlways = model.chosenClassesToMockAlways.mapTo(mutableSetOf()) { it.name }.toTypedArray(), fuzzingValue = model.fuzzingValue, - runGeneratedTestsWithCoverage = model.runGeneratedTestsWithCoverage + runGeneratedTestsWithCoverage = model.runGeneratedTestsWithCoverage, + commentStyle = model.commentStyle ) override fun equals(other: Any?): Boolean { @@ -137,6 +140,8 @@ class Settings(val project: Project) : PersistentStateComponent val classesToMockAlways: Set get() = state.classesToMockAlways.toSet() + val javaDocCommentStyle: JavaDocCommentStyle get() = state.commentStyle + var fuzzingValue: Double get() = state.fuzzingValue set(value) { @@ -182,6 +187,7 @@ class Settings(val project: Project) : PersistentStateComponent state.treatOverflowAsError = provider as TreatOverflowAsError UtSettings.treatOverflowAsError = provider == TreatOverflowAsError.AS_ERROR } + JavaDocCommentStyle::class -> state.commentStyle = provider as JavaDocCommentStyle // TODO: add error processing else -> error("Unknown class [$loader] to map value [$provider]") } @@ -196,6 +202,7 @@ class Settings(val project: Project) : PersistentStateComponent RuntimeExceptionTestsBehaviour::class -> runtimeExceptionTestsBehaviour ForceStaticMocking::class -> forceStaticMocking TreatOverflowAsError::class -> treatOverflowAsError + JavaDocCommentStyle::class -> javaDocCommentStyle // TODO: add error processing else -> error("Unknown service loader: $loader") } diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt index fd0e7ab992..d177d9c2d0 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/settings/SettingsWindow.kt @@ -23,6 +23,7 @@ import org.utbot.framework.codegen.HangingTestsTimeout import org.utbot.framework.codegen.RuntimeExceptionTestsBehaviour import org.utbot.framework.plugin.api.CodeGenerationSettingItem import org.utbot.framework.plugin.api.CodegenLanguage +import org.utbot.framework.plugin.api.JavaDocCommentStyle import org.utbot.framework.plugin.api.TreatOverflowAsError class SettingsWindow(val project: Project) { @@ -38,6 +39,7 @@ class SettingsWindow(val project: Project) { CodegenLanguage::class to "Generated test language:", RuntimeExceptionTestsBehaviour::class to "Test with exceptions:", TreatOverflowAsError::class to "Overflow detection:", + JavaDocCommentStyle::class to "Javadoc comment style:" ) val tooltipLabels = mapOf( CodegenLanguage::class to "You can generate test methods in Java or Kotlin regardless of your source code language." @@ -80,15 +82,15 @@ class SettingsWindow(val project: Project) { } } } + mapOf( RuntimeExceptionTestsBehaviour::class to RuntimeExceptionTestsBehaviour.values(), - TreatOverflowAsError::class to TreatOverflowAsError.values() + TreatOverflowAsError::class to TreatOverflowAsError.values(), + JavaDocCommentStyle::class to JavaDocCommentStyle.values() ).forEach { (loader, values) -> valuesComboBox(loader, values) } - - row { cell { forceMockCheckBox = checkBox("Force mocking static methods") 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 8681327a71..88e6e62352 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 @@ -499,6 +499,7 @@ class GenerateTestsDialogWindow(val model: GenerateTestsModel) : DialogWrapper(m model.forceStaticMocking = forceStaticMocking model.chosenClassesToMockAlways = chosenClassesToMockAlways() model.fuzzingValue = fuzzingValue + model.commentStyle = javaDocCommentStyle UtSettings.treatOverflowAsError = treatOverflowAsError == TreatOverflowAsError.AS_ERROR }