UTBotJava generates test cases by code, trying to cover maximum statements and execution paths.

Overview

UTBot Java: build and run tests Plugin and CLI: publish as archives

What is UTBotJava?

UTBotJava generates test cases by code, trying to cover maximum statements and execution paths. We treat source code as source of truth assuming that behavior is correct and corresponds to initial user demand. Generated tests are placed in so-called regression suite. Thus, we fixate current behavior by generated test cases. Using UTBotJava developers obtain full control of their code. No future change can break the code without being noticed once it's covered with tests generated by UTBot. This way, modifications made by developers to an existing code are much safer. Hence, with the help of generated unit tests, UTBot provides dramatic code quality improvement.

UTBot Java IntelliJ IDEA plugin

UTBot Java provides users with IntelliJ IDEA plugin.

The plugin was tested on Win64 and Linux64.

Not supported on MAC OS for now (will be fixed soon).

How to download IntelliJ IDEA plugin

You can download the plugin from GitHub Releases.

How to install IntelliJ IDEA plugin

See step-by-step guide explaining how to install the plugin.

How to use IntelliJ IDEA plugin

See step-by-step guide explaining how to use the plugin.

How to contribute to UTBot Java

See Contributing guidelines.

Comments
  • IndexNotReadyException thrown in IDEA with installed UnitTestBot plugin

    IndexNotReadyException thrown in IDEA with installed UnitTestBot plugin

    Description

    Installed UnitTestBot plugin throwed IndexNotReadyException when switching from jdk-1.8 to jdk-11

    To Reproduce

    Steps to reproduce the behavior:

    1. JDK-1.8 and JDK-11 are installed. Path and JAVA_HOME are pointing to JDK-1.8
    2. Run the UTBotJava project in IntelliJ Idea
    3. Install UnitTestBot plugin
    4. Use plugin to generate tests for a class in utbot-samples
    5. Open File -> Project Structure -> change Project JDK to 11, apply changes

    Expected behavior

    No exception popup is shown

    Actual behavior

    IDE Internal Errors popup is shown with Exception in plugin UnitTestBot (2022.6)

    Switch JDK in project2

    Visual proofs (screenshots, logs, images)

    com.intellij.openapi.project.IndexNotReadyException: Please change caller according to com.intellij.openapi.project.IndexNotReadyException documentation at com.intellij.openapi.project.IndexNotReadyException.create(IndexNotReadyException.java:67) at com.intellij.util.indexing.FileBasedIndexImpl.handleDumbMode(FileBasedIndexImpl.java:844) at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:792) at com.intellij.psi.stubs.StubIndexEx.getContainingIds(StubIndexEx.java:352) at com.intellij.psi.stubs.StubIndexEx.processElements(StubIndexEx.java:159) at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:99) at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:87) at com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex.get(JavaFullClassNameIndex.java:34) at com.intellij.psi.impl.file.impl.JavaFileManagerImpl.doFindClasses(JavaFileManagerImpl.java:84) at com.intellij.psi.impl.file.impl.JavaFileManagerImpl.findClasses(JavaFileManagerImpl.java:72) at com.intellij.psi.impl.PsiElementFinderImpl.findClasses(PsiElementFinderImpl.java:53) at com.intellij.psi.impl.JavaPsiFacadeImpl.findClassesWithoutJvmFacade(JavaPsiFacadeImpl.java:159) at com.intellij.psi.impl.JavaPsiFacadeImpl.findClassesWithJvmFacade(JavaPsiFacadeImpl.java:130) at com.intellij.psi.impl.JavaPsiFacadeImpl.findClasses(JavaPsiFacadeImpl.java:122) at com.intellij.psi.impl.file.PsiPackageImpl.findAllClasses(PsiPackageImpl.java:202) at com.intellij.psi.impl.file.PsiPackageImpl.getCachedClassesByName(PsiPackageImpl.java:192) at com.intellij.psi.impl.file.PsiPackageImpl.findClassByShortName(PsiPackageImpl.java:269) at org.utbot.intellij.plugin.generator.TestGenerator.createTestClass(TestGenerator.kt:146) at org.utbot.intellij.plugin.generator.TestGenerator.generateTestsInternal(TestGenerator.kt:85) at org.utbot.intellij.plugin.generator.TestGenerator.access$generateTestsInternal(TestGenerator.kt:67) at org.utbot.intellij.plugin.generator.TestGenerator$generateTests$1.run(TestGenerator.kt:70) at com.intellij.openapi.command.WriteCommandAction.lambda$runWriteCommandAction$4(WriteCommandAction.java:362) at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$1(WriteCommandAction.java:150) at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1015) at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$2(WriteCommandAction.java:148) at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:219) at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:184) at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.doRunWriteCommandAction(WriteCommandAction.java:157) at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.run(WriteCommandAction.java:124) at com.intellij.openapi.command.WriteCommandAction.runWriteCommandAction(WriteCommandAction.java:362) at org.utbot.intellij.plugin.generator.TestGenerator.generateTests(TestGenerator.kt:69) at org.utbot.intellij.plugin.ui.UtTestsDialogProcessor$createTests$2$1$run$$inlined$invokeLater$1.run(actions.kt:61) at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:215) at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22) at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:197) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873) at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:511) at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:69) at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:112) at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:42) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:746) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:439) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:803) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:438) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:604) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:436) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:484) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

    java.lang.Throwable at com.intellij.openapi.project.DumbServiceImpl.queueTask(DumbServiceImpl.java:303) at com.intellij.openapi.project.DumbModeTask.queue(DumbModeTask.java:64) at com.intellij.openapi.roots.impl.PushedFilePropertiesUpdaterImpl.queueTasks(PushedFilePropertiesUpdaterImpl.java:225) at com.intellij.openapi.roots.impl.PushedFilePropertiesUpdaterImpl.pushAll(PushedFilePropertiesUpdaterImpl.java:302) at com.intellij.openapi.roots.impl.JavaLanguageLevelPusher.pushLanguageLevel(JavaLanguageLevelPusher.java:30) at com.intellij.openapi.roots.impl.LanguageLevelProjectExtensionImpl.languageLevelsChanged(LanguageLevelProjectExtensionImpl.java:124) at com.intellij.openapi.roots.impl.LanguageLevelProjectExtensionImpl.setLanguageLevel(LanguageLevelProjectExtensionImpl.java:115) at com.intellij.openapi.roots.ui.configuration.ProjectConfigurable.lambda$apply$0(ProjectConfigurable.java:146) at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1015) at com.intellij.openapi.roots.ui.configuration.ProjectConfigurable.apply(ProjectConfigurable.java:125) at com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable.apply(ProjectStructureConfigurable.java:312) at com.intellij.openapi.options.ex.SingleConfigurableEditor$ApplyAction.actionPerformed(SingleConfigurableEditor.java:209) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:270) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6654) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345) at java.desktop/java.awt.Component.processEvent(Component.java:6419) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5029) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2793) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898) at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:820) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:743) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:439) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:803) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:438) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:604) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:436) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:484) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121) at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233) at java.desktop/java.awt.Dialog.show(Dialog.java:1070) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:702) at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:439) at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1668) at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1626) at com.intellij.ide.actions.ShowStructureSettingsAction.showDialog(ShowStructureSettingsAction.java:46) at com.intellij.ide.actions.ShowStructureSettingsAction.actionPerformed(ShowStructureSettingsAction.java:36) at com.intellij.openapi.actionSystem.ex.ActionUtil.lambda$performActionDumbAwareWithCallbacks$4(ActionUtil.java:235) at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:256) at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:235) at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$performAction$0(ActionMenuItem.java:289) at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:233) at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.performAction(ActionMenuItem.java:281) at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:296) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$2(ActionMenuItem.java:111) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106) at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:95) at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:111) at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:540) at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:570) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6654) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345) at java.desktop/java.awt.Component.processEvent(Component.java:6419) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5029) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2793) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898) at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:820) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:743) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:439) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:803) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:438) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:119) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:604) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:436) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:484) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

    stacktrace.txt indexingStart.trace.txt

    Environment

    Windows 10 Pro 21H1 IntelliJ IDEA 2022.1.2 (Community Edition) Build #IC-221.5787.30, built on May 31, 2022 JDK 8: amazon-corretto-8.332.08.1-windows-x64-jdk JDK 11: amazon-corretto-11.0.15.9.1-windows-x64

    bug 
    opened by alisevych 22
  • Manual testing of Release 2022.10.1

    Manual testing of Release 2022.10.1

    Initial set-up

    Check that the IntelliJ Idea UTBot plugin can be successfully installed

    • [x] Build from the unit-test-bot/rc10102022 branch
    • [x] Download plugin
    • [x] Check downloaded zip-file size < 100 MB
    • [x] Open IntelliJ IDEA 2022.2.2
    • [x] Remove previously installed UTBot plugin
    • [x] Clone or reuse UTBot project (https://github.com/UnitTestBot/UTBotJava.git)
    • [x] Open the project in the IDE
    • [x] Install the downloaded plugin

    Go through manual scenarios

    Manual scenario #1

    • [x] Use default plugin settings
    • [x] Open the utbot-sample/src/main/java/org/utbot/examples/algorithms/ArraysQuickSort.java file
    • [x] Generate tests for the class
    • [x] Remove results
    • [x] Generate and Run test for a method

    Manual scenario #2

    • [x] Use default plugin settings
    • [x] Open the utbot-sample/src/main/java/org/utbot/examples/mock/CommonMocksExample.java file
    • [x] Generate tests with different Mocking options combinations

    Manual scenario #3

    • [x] Create a new Gradle project with JDK 17
    • [x] Add a simple java file to test
    • [x] Generate a test in the existing test root

    Manual scenario #4

    • [x] Create a new Maven project with JDK 8
    • [x] Add a simple java file to test
    • [x] Generate a test with a new test root

    Manual scenario #5

    • [x] Create a new Idea project with JDK 11
    • [x] Add a simple java file to test
    • [x] Generate tests for several classes

    Regression testing

    • [x] IDEA 2022.1.4 (JRE 11)
    • [x] IDEA 2022.2.2 (JRE 17)
    • [x] Sandbox
    • [x] Nested calls
    • [x] Recursion
    • [x] Cycles
    • [x] Mocks
    • [x] UtUtils class generation
    • [x] Summaries: tags, plain text
    • [x] Summaries: regions
    • [x] Exceptions: thrown, caught, check regions
    qa 
    opened by alisevych 15
  • Manual testing of Release 2022.10.2

    Manual testing of Release 2022.10.2

    Initial set-up

    Check that the IntelliJ Idea UTBot plugin can be successfully installed

    • [x] Build from the unit-test-bot/rc10192022 branch
    • [x] Download plugin
    • [x] Check downloaded zip-file size < 100 MB
    • [x] Open IntelliJ IDEA 2022.2.3 (last released)
    • [x] Remove previously installed UTBot plugin
    • [x] Clone or reuse UTBot project (https://github.com/UnitTestBot/UTBotJava.git)
    • [x] Open the project in the IDE
    • [x] Install the downloaded plugin

    Go through manual scenarios

    Manual scenario #1

    • [x] Use default plugin settings
    • [x] Open the utbot-sample/src/main/java/org/utbot/examples/algorithms/ArraysQuickSort.java file
    • [x] Generate tests for the class
    • [x] Remove results
    • [x] Generate and Run test for a method

    Manual scenario #2

    • [x] Use default plugin settings
    • [x] Open the utbot-sample/src/main/java/org/utbot/examples/mock/CommonMocksExample.java file
    • [x] Generate tests with different Mocking options combinations

    Verify fixes

    • [x] #1028
    • [ ] #747
    • [x] #1098
    • [x] #1129
    • [ ] #273
    • [x] #1149
    • [ ] #983
    • [x] #1173
    • [ ] #448
    • [ ] #711
    • [ ] #1054

    Regression checks

    Collect compulsory reflection in tests

    Add a class / package - generate / generate and run tests for class / method / class - check tests

    • [x] Installed on 2021.2.4 - Gradle project
    • [x] Installed on 2022.1.4 - Gradle project
    • [x] Installed on 2022.2.3 - Gradle project
    • [ ] Installed on 2021.2.4 - Maven project
    • [x] Installed on 2022.1.4 - Maven project
    • [x] Installed on 2022.2.3 - Maven project
    • [ ] Installed on 2021.2.4 - IntelliJ project
    • [x] Installed on 2022.1.4 - IntelliJ project
    • [ ] Installed on 2022.2.3 - IntelliJ project

    Add a class / package - generate tests for class / method / class

    • [ ] Gradle - existing test sources root - No mocks
    • [x] Maven - existing test sources root - Mocks outside package
    • [ ] Maven - new test sources root - Mocks outside class
    • [ ] IntelliJ - new test sources root - Mocks outside class - Mock static methods

    Add a class / package - generate tests for class / method / class

    • [ ] JDK 8 - JUnit 5 - Parametrized
    • [x] JDK 11 - JUnit 5 - Parametrized off
    • [ ] JDK 11 - JUnit 4 - Parametrized off
    • [x] JDK 11 - TestNG - Parametrized
    • [ ] JDK 17 - JUnit 5 - Parametrized
    • [ ] JDK 17 - JUnit 4 - Parametrized off
    • [x] JDK 17 - TestNG - Parametrized off

    UI checks - in a project with JDK 17

    • [x] timeout changes - 1/10/60 sec - check with stopwatch
    • [x] cancellation - check on different steps
    • [ ] regions: Symbolic first, Fuzzing, error suite (NPE), explicitly thrown exceptions, caught exceptions (successful)
    • [ ] exceptions - check regions for exceptions
    • [ ] exceptions - check Problems tab
    • [ ] context menu / shortcut
    • [ ] call from method / class / package - check Members list

    Check Settings - in a project with JDK 17

    • [ ] Symbolic 100%
    • [x] Symbolic 95%
    • [ ] Symbolic 5%
    • [x] Symbolic 0% - Fuzzing 100%
    • [ ] Summaries with custom tags - check all tags
    • [ ] Summaries with plain text - check for Fuzzing
    • [ ] Summaries turned off
    • [ ] Tests with exceptions: Fail
    • [ ] Tests with exceptions: Pass
    • [ ] Overflow : Ignore overflows
    • [ ] Overflow: Treat overflows as errors

    Other features testing

    • [ ] Sandboxing - check default behavior
    • [ ] Sandboxing - add some permission
    • [ ] Strings
    qa 
    opened by alisevych 9
  • Clarify scope of EXPLICITLY_THROWN_UNCHECKED_EXCEPTIONS test suite

    Clarify scope of EXPLICITLY_THROWN_UNCHECKED_EXCEPTIONS test suite

    Description

    Clarify scope of generated suite with EXPLICITLY_THROWN_UNCHECKED_EXCEPTIONS.

    Expected behavior

    Is it correct that only explicitly thrown exceptions without try-catch should be located in this suite?

    Environment

    Fuzzing is on.

    Context

    Example:

    Test with String.repeat(-1) throws [java.lang.IllegalArgumentException: count is negative: -1]

    Expected result

    The test should be put into FUZZING: IMPLICITLY_THROWN_UNCHECKED_EXCEPTIONS region.

    Actual result

    The test is currently put into FUZZING: EXPLICITLY_THROWN_UNCHECKED_EXCEPTIONS region.

    Originally posted by @alisevych in https://github.com/UnitTestBot/UTBotJava/issues/1102#issuecomment-1269877351

    bug ui meta generator 
    opened by alisevych 8
  • Manual testing of Release 2022.10

    Manual testing of Release 2022.10

    Initial set-up

    Check that the IntelliJ Idea UTBot plugin can be successfully installed on IDEA 2022.1.4

    • [x] Plugin from unit-test-bot/rc2992022 build with latest changes
    • [x] Download plugin
    • [x] Check downloaded zip-file size < 100 MB
    • [x] Open IntelliJ IDE 2022.1.4
    • [x] Remove previously installed UTBot plugin
    • [x] Clone or reuse UTBot project (https://github.com/UnitTestBot/UTBotJava.git)
    • [x] Open the project in the IDE
    • [x] Install the downloaded plugin

    Check that the IntelliJ Idea UTBot plugin can be successfully installed on IDEA 2022.2.2

    • [x] Open IntelliJ IDE 2022.2.2
    • [x] Remove previously installed UTBot plugin
    • [x] Clone or reuse UTBot project (https://github.com/UnitTestBot/UTBotJava.git)
    • [x] Open the project in the IDE
    • [x] Install the downloaded plugin

    Go through manual scenarios on IDEA 2022.1.4

    Manual scenario #1

    • [x] Use default plugin settings
    • [x] Open the utbot-sample/src/main/java/org/utbot/examples/algorithms/ArraysQuickSort.java file
    • [x] Generate tests for the class
    • [x] Remove results
    • [x] Generate and Run test for a method

    Manual scenario #2

    • [x] Use default plugin settings
    • [x] Open the utbot-sample/src/main/java/org/utbot/examples/mock/CommonMocksExample.java file
    • [x] Generate tests with different Mocking options combinations

    Go through manual scenarios on IDEA 2022.2.2

    Manual scenario #1

    • [x] Use default plugin settings
    • [x] Open the utbot-sample/src/main/java/org/utbot/examples/algorithms/ArraysQuickSort.java file
    • [x] Generate tests for the class
    • [x] Remove results
    • [x] Generate and Run test for a method

    Manual scenario #2

    • [x] Use default plugin settings
    • [x] Open the utbot-sample/src/main/java/org/utbot/examples/mock/CommonMocksExample.java file
    • [x] Generate tests with different Mocking options combinations

    @alisevych

    Check following in IDEA 2022.1.4

    Manual scenario #3

    • [x] Create a new Gradle project with JDK 8
    • [x] Add a simple java file to test
    • [x] Generate a test in the existing test root

    Manual scenario #4

    • [x] Create a new Maven project with JDK 8
    • [x] Add a simple java file to test
    • [x] Generate a test with existing test sources root

    Manual scenario #5

    • [x] Create a new Idea project with JDK 11
    • [x] Add a simple java file to test
    • [x] Generate tests for several classes in a new test sources root

    @tyuldashev

    Check following in IDEA 2022.2.2

    Manual scenario #3

    • [x] Create a new Gradle project with JDK 8
    • [x] Add a simple java file to test
    • [x] Generate a test in the existing test root

    Manual scenario #4

    • [x] Create a new Maven project with JDK 8
    • [x] Add a simple java file to test
    • [x] Generate a test with existing test sources root

    Manual scenario #5

    • [x] Create a new Idea project with JDK 11
    • [x] Add a simple java file to test
    • [x] Generate tests for several classes in a new test sources root

    Regression testing

    @alisevych

    IDEA 2022.1.4

    • [x] Maven with JDK 11 : make following checks
    • [x] Maven with JDK 8 : make following checks
    • [x] Test frameworks JUnit4/ JUnit5/TestNG
    • [x] - with Parametrization on / off
    • [x] - with mocks on /off
    • [x] - UtUtils class (with mocks off / on) - check it's regenerated when mocks are on for the first time
    • [x] String Java 8 - with JDK 8
    • [x] String Java 9 - 11 - with JDK 11

    Project with JDK 11:

    • [x] timeout changes - 1/10/60 sec
    • [x] cancellation
    • [x] regions: Symbolic first, Fuzzing, error suite (NPE), explicitly thrown exceptions, caught exceptions (successful)
    • [x] exceptions - check regions for exceptions
    • [x] context menu / shortcut
    • [x] call from method / class / package - check Members list
    • [x] math
    • [x] make.symbolic
    • [ ] inner
    • [x] collections
    • [x] Generics - with Fuzzing
    • [x] Sandbox - smoke

    @tyuldashev

    IDEA 2022.2.2

    • [x] Gradle project with JDK 8 : make following checks
    • [x] Gradle project with JDK 11 : make following checks
    • [x] Test frameworks JUnit4/ JUnit5/TestNG
    • [x] - with Parametrization on / off
    • [x] - with mocks on /off
    • [x] - UtUtils class (with mocks off / on) - check it's regenerated when mocks are on for the first time
    • [ ] String Java 8 - with JDK 8
    • [ ] String Java 9 - 11 - with JDK 11

    Project with JDK 11:

    • [x] timeout changes - 1/10/60 sec
    • [ ] cancellation
    • [x] regions: Symbolic first, Fuzzing, error suite (NPE), explicitly thrown exceptions, caught exceptions (successful)
    • [x] exceptions - check regions for exceptions
    • [x] context menu / shortcut
    • [x] call from method / class / package - check Members list
    • [x] Date - check
    • [x] Arrays
    • [x] annotations
    • [x] Generics - with Fuzzing
    • [x] Sandbox - smoke
    qa 
    opened by alisevych 8
  • Empty region names and missing javadoc for `Sort.arrayCopy`

    Empty region names and missing javadoc for `Sort.arrayCopy`

    Description

    To Reproduce

        public int[] arrayCopy() {
            int[] fst = {1, 2, 3};
            int[] snd = {4, 5, 6};
    
            System.arraycopy(fst, 0, snd, 0, 3);
            return snd;
        }
    

    Steps to reproduce the behavior:

    1. Open algorithms/Sort.java sample from UTBot project
    2. Or use code sample from above.
    3. In plugin settings set generation method to 95% Symbolic
    4. Use plugin to generate tests
    5. Open the generated test

    Expected behavior

    Every test is placed in region with name and has proper java doc description

    Actual behavior

    Quite many regions have no names and some tests have no javadocs

    Visual proofs (screenshots, logs, images)

    Here is one of generated test:

    public class SortTest {
        ///region Test suites for executable org.example.Sort.arrayCopy
    
        ///region
    
        @Test
        public void testArrayCopy1() {
            Sort sort = new Sort();
    
            int[] actual = sort.arrayCopy();
    
            int[] expected = {1, 2, 3};
            assertArrayEquals(expected, actual);
        }
    
    ...
    
    bug meta generator verified 
    opened by tyuldashev 7
  • StringExamples generation exceeds timeout in 2-3 times

    StringExamples generation exceeds timeout in 2-3 times

    Description

    Test generation timeout is exceeded 2-3 times for every StringExamples.

    To Reproduce

    1. Run the 'UTBotJava' project in IntelliJ Idea 2022.2.2
    2. Install RC plugin build
    3. Open test generation dialog for utbot-sample/src/main/java/org/utbot/examples/strings/StringExamples.java
    4. Select both classes: IntPair and StringExamples, timeout is 60 sec
    5. Check when test generation finishes.

    Expected behavior

    Tests are supposed to be generated during the defined timeout of 60 sec.

    Actual behavior

    Tests are generation for about 4 minutes 45 sec - up to 5 minutes

    Environment

    Windows 10 Pro RAM 32.0 GB Processor Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz 3.60 GHz IntelliJ IDEA 2022.1.4 Heap memory allocated for IDEA is 2 GB

    Additional context

    Originally posted by @alisevych in https://github.com/UnitTestBot/UTBotJava/issues/1102#issuecomment-1269848248

    @dtim has made some investigation on the Release 2022.10 build

    bug verified 
    opened by alisevych 7
  • @utbot.triggersRecursion tag is missing

    @utbot.triggersRecursion tag is missing

    Description

    @utbot.triggersRecursion tag is missing for Recursion.fib(int n) tests

    To Reproduce

    1. Run the UTBot project in IntelliJ Idea 2022.1.4
    2. Install plugin
    3. Check: File -> Settings -> Tools -> UnitTestBot -> Javadoc comment style is "Structured via custom Javadoc tags"
    4. Open the utbot-sample/src/main/java/org/utbot/examples/recursion/Recursion.java file
    5. Generate tests for the methods
    6. Open the generated test

    Expected behavior

    Tests with input n >= 1 are supposed to have @utbot.triggersRecursion tag in Java doc.

    Actual behavior

    Tests with input (n = 1), (n = 2) do not have @utbot.triggersRecursion tag in Java doc.

    Visual proofs (screenshots, logs, images)

        /**
         * @utbot.classUnderTest {@link Recursion}
         * @utbot.methodUnderTest {@link Recursion#fib(int)}
         * @utbot.executesCondition {@code (n == 1): False}
         * @utbot.returnsFrom {@code return fib(n - 1) + fib(n - 2);}
         */
        @Test
        @DisplayName("fib: return 1 -> return 0")
        public void testFib_NNotEquals1() {
            Recursion recursion = new Recursion();
    
            int actual = recursion.fib(2);
    
            assertEquals(1, actual);
        }
    

    Environment

    Windows 10 Pro Gradle project JDK 11

    bug meta generator verified release tailings 
    opened by alisevych 7
  • Test generation fails for test with Queue as method parameter

    Test generation fails for test with Queue as method parameter

    Description

    Test generation fails for test with Queue as method parameter.

    To Reproduce

    Steps to reproduce the behavior:

    1. Open project in IntelliJ Idea with one of the latest versions of UTBotJava plugin installed
    2. Add a class
    3. Add a class method: public boolean q(Queue<Integer> a) { return a.add(1); }
    4. Generate test for this method

    Expected behavior

    Tests are supposed to be generated.

    Actual behavior

    An error occurs: ClassNotFoundException.

    Visual proofs (screenshots, logs, images)

    org.utbot.instrumentation.util.ChildProcessError: Error in the child process |> java.lang.ClassNotFoundException: java.lang.invoke.VarHandleObjects$FieldInstanceReadWrite
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    	at org.utbot.instrumentation.process.HandlerClassesLoader.loadClass(ChildProcess.kt:38)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    	at org.utbot.framework.concrete.MockValueConstructor.kClass(MockValueConstructor.kt:470)
    	at org.utbot.framework.concrete.MockValueConstructor.javaClass(MockValueConstructor.kt:455)
    	at org.utbot.framework.concrete.MockValueConstructor.constructObject(MockValueConstructor.kt:158)
    	at org.utbot.framework.concrete.MockValueConstructor.construct(MockValueConstructor.kt:127)
    	at org.utbot.framework.concrete.MockValueConstructor.constructStatics(MockValueConstructor.kt:110)
    	at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:145)
    	at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:106)
    	at org.utbot.instrumentation.process.ChildProcessKt.loop(ChildProcess.kt:133)
    	at org.utbot.instrumentation.process.ChildProcessKt.main(ChildProcess.kt:77)
    	at org.utbot.instrumentation.process.ChildProcessKt.main(ChildProcess.kt)
    
    	at org.utbot.instrumentation.ConcreteExecutor.executeAsync(ConcreteExecutor.kt:415)
    	at org.utbot.instrumentation.ConcreteExecutor$executeAsync$1.invokeSuspend(ConcreteExecutor.kt)
    	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:274)
    	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:84)
    	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
    	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
    	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
    	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
    	at org.utbot.common.ConcurrencyKt.runBlockingWithCancellationPredicate(Concurrency.kt:38)
    	at org.utbot.framework.plugin.api.TestCaseGenerator$generate$4.invoke(TestCaseGenerator.kt:158)
    	at org.utbot.framework.plugin.api.TestCaseGenerator$generate$4.invoke(TestCaseGenerator.kt:51)
    	at org.utbot.common.ConcurrencyKt.runIgnoringCancellationException(Concurrency.kt:47)
    	at org.utbot.framework.plugin.api.TestCaseGenerator.generate(TestCaseGenerator.kt:157)
    	at org.utbot.framework.plugin.api.TestCaseGenerator.generate$default(TestCaseGenerator.kt:144)
    	at org.utbot.intellij.plugin.generator.UtTestsDialogProcessor$createTests$2$1.run(UtTestsDialogProcessor.kt:190)
    	at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:935)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsync$5(CoreProgressManager.java:442)
    	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:235)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:170)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:629)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:581)
    	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:157)
    	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:235)
    	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
    	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
    	at java.base/java.lang.Thread.run(Thread.java:834)
    Caused by: java.lang.ClassNotFoundException: java.lang.invoke.VarHandleObjects$FieldInstanceReadWrite
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    	at org.utbot.instrumentation.process.HandlerClassesLoader.loadClass(ChildProcess.kt:38)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    	at org.utbot.framework.concrete.MockValueConstructor.kClass(MockValueConstructor.kt:470)
    	at org.utbot.framework.concrete.MockValueConstructor.javaClass(MockValueConstructor.kt:455)
    	at org.utbot.framework.concrete.MockValueConstructor.constructObject(MockValueConstructor.kt:158)
    	at org.utbot.framework.concrete.MockValueConstructor.construct(MockValueConstructor.kt:127)
    	at org.utbot.framework.concrete.MockValueConstructor.constructStatics(MockValueConstructor.kt:110)
    	at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:145)
    	at org.utbot.framework.concrete.UtExecutionInstrumentation.invoke(UtExecutionInstrumentation.kt:106)
    	at org.utbot.instrumentation.process.ChildProcessKt.loop(ChildProcess.kt:133)
    	at org.utbot.instrumentation.process.ChildProcessKt.main(ChildProcess.kt:77)
    	at org.utbot.instrumentation.process.ChildProcessKt.main(ChildProcess.kt)
    

    Environment

    Ubuntu, Java 8, guest IDEA 2020.2 community

    Additional context

    Same code fails on https://www.utbot.org/utbot/.

    Error:

    Status Code: TEST_GENERATION_FAILED
    
    TEST GENERATION: TEST_GENERATION_FAILED
    Timeout
    
    TEST RUN: ERROR OCCURRED
    [object Object]: no details
    
    bug 
    opened by tochilinak 7
  • PluginException with TestGenerator.reformat

    PluginException with TestGenerator.reformat

    Description

    PluginException with TestGenerator.reformat is falling in IDEA when tests are generated.

    To Reproduce

    Steps to reproduce the behavior:

    1. Open IntelliJ IDEA
    2. Plugin is installed
    3. Create a new IDEA project with JDK 8 (reproduced with Gradle projects and JDK 8/11)
    4. Add a class like that
    public class ListToStringExample {
    
        public void toStringList() {
            // Arrays.asList("a", "b", "c").toString();
            List<String> list = new ArrayList<>();
            list.add("a");
            list.add("b");
            list.add("c");
            list.toString();
            Random random = new Random();
            list.get(random.nextInt(list.size()));
        }
    
        public boolean rand(int a) {
            Random r = new Random();
            return r.nextInt() > a;
        }
    
    }
    

    Expected behavior

    No exception is supposed to be thrown.

    Actual behavior

    com.intellij.diagnostic.PluginException is thrown with the following stacktrace:

    Visual proofs (screenshots, logs, images)

    com.intellij.diagnostic.PluginException: Element: class com.intellij.psi.impl.source.PsiJavaFileImpl #JAVA  because: different providers: com.intellij.psi.SingleRootFileViewProvider{vFile=file://C:/Users/lWX1182794/UTBotJava/utbot-sample/src/test/java/org/utbot/examples/algorithms/ArraysQuickSortTest.java, vFileId=865906, content=VirtualFileContent{size=77}, eventSystemEnabled=true}(472ad3d4); com.intellij.psi.SingleRootFileViewProvider{vFile=file://C:/Users/lWX1182794/UTBotJava/utbot-sample/src/test/java/org/utbot/examples/algorithms/ArraysQuickSortTest.java, vFileId=865906, content=VirtualFileContent{size=77}, eventSystemEnabled=true}(3bd9cfd1)
    invalidated at: see attachment [Plugin: com.intellij.java]
    	at com.intellij.diagnostic.PluginProblemReporterImpl.createPluginExceptionByClass(PluginProblemReporterImpl.java:23)
    	at com.intellij.diagnostic.PluginException.createByClass(PluginException.java:92)
    	at com.intellij.psi.util.PsiUtilCore.ensureValid(PsiUtilCore.java:478)
    	at com.intellij.psi.impl.DebugUtil.diagnosePsiDocumentInconsistency(DebugUtil.java:564)
    	at com.intellij.psi.formatter.FormattingDocumentModelImpl.checkDocument(FormattingDocumentModelImpl.java:53)
    	at com.intellij.psi.formatter.FormattingDocumentModelImpl.createOn(FormattingDocumentModelImpl.java:43)
    	at com.intellij.lang.java.JavaFormattingModelBuilder.createModel(JavaFormattingModelBuilder.java:41)
    	at com.intellij.formatting.CoreFormatterUtil.buildModel(CoreFormatterUtil.java:30)
    	at com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade.processRange(CodeFormatterFacade.java:112)
    	at com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade.processElement(CodeFormatterFacade.java:67)
    	at com.intellij.formatting.service.CoreFormattingService.formatElement(CoreFormattingService.java:44)
    	at com.intellij.formatting.service.FormattingServiceUtil.formatElement(FormattingServiceUtil.java:67)
    	at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.reformat(CodeStyleManagerImpl.java:82)
    	at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.reformat(CodeStyleManagerImpl.java:65)
    	at org.utbot.intellij.plugin.generator.TestGenerator.reformat(TestGenerator.kt:308)
    	at org.utbot.intellij.plugin.generator.TestGenerator.access$reformat(TestGenerator.kt:74)
    	at org.utbot.intellij.plugin.generator.TestGenerator$addTestMethodsAndSaveReports$1$1$1$2.run(TestGenerator.kt:278)
    	at com.intellij.openapi.command.WriteCommandAction.lambda$runWriteCommandAction$4(WriteCommandAction.java:362)
    	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$1(WriteCommandAction.java:150)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1015)
    	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$2(WriteCommandAction.java:148)
    	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:219)
    	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:184)
    	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.doRunWriteCommandAction(WriteCommandAction.java:157)
    	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.run(WriteCommandAction.java:124)
    	at com.intellij.openapi.command.WriteCommandAction.runWriteCommandAction(WriteCommandAction.java:362)
    	at org.utbot.intellij.plugin.generator.TestGenerator$addTestMethodsAndSaveReports$1$1$1.run(TestGenerator.kt:277)
    	at org.utbot.intellij.plugin.generator.TestGenerator$run$$inlined$let$lambda$3.compute(actions.kt:58)
    	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$runWriteAction$13(ApplicationImpl.java:1024)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteActionWithClass(ApplicationImpl.java:1003)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1024)
    	at org.utbot.intellij.plugin.generator.TestGenerator.run(TestGenerator.kt:516)
    	at org.utbot.intellij.plugin.generator.TestGenerator.access$run(TestGenerator.kt:74)
    	at org.utbot.intellij.plugin.generator.TestGenerator$addTestMethodsAndSaveReports$1$1.run(TestGenerator.kt:263)
    	at org.utbot.intellij.plugin.generator.TestGenerator$run$$inlined$let$lambda$4.run(ApplicationUtils.kt:59)
    	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:215)
    	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
    	at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:197)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873)
    	at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:511)
    	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:69)
    	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:112)
    	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:42)
    	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898)
    	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:746)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:439)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:803)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:438)
    	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
    	at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:604)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:436)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873)
    	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:484)
    	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
    Caused by: com.intellij.psi.PsiInvalidElementAccessException: Element: class com.intellij.psi.impl.source.PsiJavaFileImpl #JAVA  because: different providers: com.intellij.psi.SingleRootFileViewProvider{vFile=file://C:/Users/lWX1182794/UTBotJava/utbot-sample/src/test/java/org/utbot/examples/algorithms/ArraysQuickSortTest.java, vFileId=865906, content=VirtualFileContent{size=77}, eventSystemEnabled=true}(472ad3d4); com.intellij.psi.SingleRootFileViewProvider{vFile=file://C:/Users/lWX1182794/UTBotJava/utbot-sample/src/test/java/org/utbot/examples/algorithms/ArraysQuickSortTest.java, vFileId=865906, content=VirtualFileContent{size=77}, eventSystemEnabled=true}(3bd9cfd1)
    invalidated at: see attachment
    	... 64 more
    
    
    java.lang.Throwable
    	at com.intellij.psi.impl.DebugUtil.beginPsiModification(DebugUtil.java:446)
    	at com.intellij.psi.impl.DebugUtil.performPsiModification(DebugUtil.java:479)
    	at com.intellij.psi.impl.file.impl.FileManagerImpl.setViewProvider(FileManagerImpl.java:244)
    	at com.intellij.psi.impl.file.impl.FileManagerImpl.forceReload(FileManagerImpl.java:139)
    	at com.intellij.psi.impl.file.impl.PsiVFSListener.propertyChanged(PsiVFSListener.java:354)
    	at com.intellij.psi.impl.file.impl.PsiVFSListener.fireForGrouped(PsiVFSListener.java:780)
    	at one.util.streamex.CollapseSpliterator.accept(CollapseSpliterator.java:152)
    	at one.util.streamex.CollapseSpliterator.forEachRemaining(CollapseSpliterator.java:142)
    	at one.util.streamex.AbstractStreamEx.forEach(AbstractStreamEx.java:352)
    	at com.intellij.psi.impl.file.impl.PsiVFSListener.groupAndFire(PsiVFSListener.java:753)
    	at com.intellij.psi.impl.file.impl.PsiVFSListener.after(PsiVFSListener.java:742)
    	at com.intellij.psi.impl.file.impl.PsiVFSListener$1.after(PsiVFSListener.java:147)
    	at com.intellij.util.messages.impl.MessageBusImpl.invokeMethod(MessageBusImpl.java:642)
    	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:617)
    	at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:417)
    	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:391)
    	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:373)
    	at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:34)
    	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:180)
    	at com.sun.proxy.$Proxy213.after(Unknown Source)
    	at com.intellij.util.FileContentUtilCore.lambda$reparseFiles$0(FileContentUtilCore.java:49)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1015)
    	at com.intellij.util.FileContentUtilCore.reparseFiles(FileContentUtilCore.java:37)
    	at com.intellij.openapi.fileTypes.impl.FileTypeDetectionService.lambda$reparseLater$7(FileTypeDetectionService.java:717)
    	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:215)
    	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:22)
    	at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:197)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873)
    	at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:511)
    	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:69)
    	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:112)
    	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:42)
    	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898)
    	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:746)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:439)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:803)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:438)
    	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:106)
    	at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:604)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:436)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873)
    	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:484)
    	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
    
    

    Environment

    Windows 10 Pro IntelliJ IDEA 2022.1.3 JDK 8, 11

    bug 
    opened by alisevych 7
  • Fix python coverage database bug with access to database directory

    Fix python coverage database bug with access to database directory

    Description

    Fix bug with database path in python module coverage. Now we create database in temporary directory with other python files.

    Note: See #1542

    Fixes #1478

    Type of Change

    • Bug fix (non-breaking change which fixes an issue)

    How Has This Been Tested?

    Manual Scenario

    See https://github.com/UnitTestBot/UTBotJava/issues/1478 steps 1-8 with plugin from this build

    Expected result: generated tests, for example:

    import sys
    sys.path.append('..')
    import builtins
    import types
    import sample
    import unittest
    
    
    class TestTopLevelFunctions(unittest.TestCase):
        # region Test suites for executable sample.print_hi
        
        # region
        
        def test_print_hi(self):
            actual = sample.print_hi((1 << 100))
            
            self.assertEqual(None, actual)
        
        def test_print_hi_throws_t(self):
            sample.print_hi(str(b'\xf0\xa3\x91\x96', 'utf-8'))
            
            # raises builtins.UnicodeEncodeError
        # endregion
        
        # endregion
        
        # region Test suites for executable sample.div
        
        # region
        
        def test_div(self):
            actual = sample.div(1, 1)
            
            self.assertEqual(1.0, actual)
        # endregion
        
        # endregion
    

    Checklist (remove irrelevant options):

    This is the author self-check list

    • [x] The change followed the style guidelines of the UTBot project
    • [x] Self-review of the code is passed
    • [x] The change contains enough commentaries, particularly in hard-to-understand areas
    • [ ] New documentation is provided or existed one is altered
    • [x] No new warnings
    • [ ] New tests have been added
    • [x] All tests pass locally with my changes
    bug python 
    opened by tamarinvs19 6
  • Fixed searching for inherited ambiguous methods

    Fixed searching for inherited ambiguous methods

    Description

    During searching of ambiguous methods, we should check inherited methods too.

    Type of Change

    • Minor bug fix (non-breaking small changes)

    How Has This Been Tested?

    Manual Scenario

    Tests for spoon.pattern.internal.parameter.MapParameterInfo.addValueAs should compile.

    Checklist (remove irrelevant options):

    • [x] The change followed the style guidelines of the UTBot project
    • [x] Self-review of the code is passed
    • [x] The change contains enough commentaries, particularly in hard-to-understand areas
    • [x] New documentation is provided or existed one is altered
    • [x] No new warnings
    codegen 
    opened by Damtev 0
  • Compilation error for test generated with fuzzer for com.google.common.collect.LinkedListMultimap.removeNode

    Compilation error for test generated with fuzzer for com.google.common.collect.LinkedListMultimap.removeNode

    Description

    Tests generated with fuzzer for com.google.common.collect.LinkedListMultimap.removeNode method from guava project do not compile.

    To Reproduce

    Generate tests for com.google.common.collect.LinkedListMultimap.removeNode method from guava project with timeLimit =120 and fuzzingRatio = 1.0 (there are no errors with fuzzingRatio = 0.0).

    Expected behavior

    Successfully compiled tests.

    Actual behavior

    Compilation fails with an attached error.

    Visual proofs (screenshots, logs, images)

    Compilation errors: C:\work\UTBotJava\utbot-junit-contest\build\output\test_candidates\guava\com\google\common\collect\LinkedListMultimapTest.java:49: error: unexpected type
            previousSiblingField.get(node3) = null;
                                    ^
      required: variable
      found:    value
    

    Environment

    Contest Estimator.

    Additional context

    No additional context.

    bug fuzzing contest estimator 
    opened by Damtev 0
  • Method equals doesn't work in some cases

    Method equals doesn't work in some cases

    Description

    Because of the reason I cannot understand, in some cases String.equals fails to produce a positive branch.

    For example, for the following code, it will find only branches that lead to false results

        public boolean stringExample(String example) {
            return example.equals("abc");
        }
    

    At the same time, in many cases it works correctly, e.g., org.utbot.examples.strings.StringExamples#getObjWithCondition. If we add to the stringExample check for null value, nothing changes.

    To Reproduce

    Steps to reproduce the behavior:

    1. Add a snippet above into engine`s tests
    2. Run a test for it
    3. Check the results

    Expected behavior

    Correctly found positive and negative branches

    Actual behavior

    Only negative branches are found

    Visual proofs (screenshots, logs, images)

    image

    Environment

    b6c89b860b6c23883fe29d28ea34ff98cb66544f commit in master, empty settings files

    Additional context

    There is no additional context.

    bug engine 
    opened by CaelmBleidd 3
  • Code generation doesn't produce code for GenericsTest

    Code generation doesn't produce code for GenericsTest

    Description

    Code generation produces empty files for org.utbot.examples.types.GenericsTest

    To Reproduce

    Steps to reproduce the behavior:

    1. Enable code generation for org.utbot.examples.types.GenericsTest
    2. Run engine's tests for org.utbot.examples.types.GenericsTest
    3. Look at the result of processTestCases method, there will be empty files

    Expected behavior

    Correctly generated code.

    Actual behavior

    Empty files are produced.

    Visual proofs image image

    Environment

    Default test environment.

    Additional context

    There is no additional context

    bug codegen 
    opened by CaelmBleidd 0
  • Tests not generated when tested project's framework not installed

    Tests not generated when tested project's framework not installed

    Plugin version: 2022.12-beta

    When testing a project which target framework (configured in .csproj) is not installed on machine (i. e. targeting .NET Framework, but building the project with .NET via back compatibility), tests are not generated.

    Cause

    targetFramework argument which is passed to V# Renderer is determined by .csproj configuration https://github.com/UnitTestBot/UTBotJava/blob/fc87c58651e97385a1ada2f5d82f7348359654eb/utbot-rider/src/dotnet/UtBot/UtBot/UnitTestBuilder.cs#L58 V# Renderer then calls new nunit --force with --framework {targetFramework}, which fails if the framework is not installed

    bug Rider 
    opened by mxprshn 0
  • Plugin works only with admin privileges

    Plugin works only with admin privileges

    Environment

    Plugin version: 2022-12-beta OS: Windows 10 Rider 2022.3

    Problem

    When running Rider without admin privileges, the button "Generate tests" is shown, but no tests appear on click

    Cause

    In logs the following lines can be found:

    13:01:15.646 |I| UnitTestBuilder               | JetPool(S) #1:15   | Could not generate tests for $LoopDemo.ArrayUtils.BinarySearch, exception - $System.UnauthorizedAccessException: Access to the path 'C:\Program Files\JetBrains\JetBrains Rider 2022.1.2\jbr\bin\VSharp.tests.41' is denied.
       at System.IO.FileSystem.CreateDirectory(String fullPath, Byte[] securityDescriptor)
       at System.IO.DirectoryInfo.CreateSubdirectory(String path)
       at VSharp.UnitTests..ctor(String outputDir)
       at VSharp.TestGenerator.StartExploration(IEnumerable`1 methods, String resultsFolder, coverageZone coverageZone, SearchStrategy searchStrategy, Verbosity verbosity, String[] mainArguments, Int32 timeout)
       at VSharp.TestGenerator.Cover(MethodBase method, Int32 timeout, String outputDirectory, Boolean renderTests, SearchStrategy searchStrategy, Verbosity verbosity)
       at UtBot.VSharp.VSharpMain.GenerateImpl(GenerateArguments arguments) in /__w/UTBotJava/UTBotJava/utbot-rider/src/dotnet/UtBot/UtBot.VSharp/VSharpMain.cs:line 43
       at UtBot.VSharp.VSharpMain.<>c__DisplayClass2_1.<Main>b__2(Lifetime _, GenerateArguments arguments) in /__w/UTBotJava/UTBotJava/utbot-rider/src/dotnet/UtBot/UtBot.VSharp/VSharpMain.cs:line 72
    
    bug Rider 
    opened by mxprshn 0
Releases(2022.12)
  • 2022.12(Dec 26, 2022)

    Meet the latest UnitTestBot release with the support for multiple languages. Check out the new features and major improvements:

    • Experimental UnitTestBot .NET plugin for JetBrains Rider IDE: generating unit tests for C# with the custom V# symbolic execution engine #1463
    • Generating tests for Python and JavaScript #1199 #1545
    • New fuzzing platform providing support for multiple languages #1457
    • Improved test generation for Kotlin code #1338 #1339 #1341 #1336 #1352
    • Multiprocess architecture based on the Reactive Distributed communication framework with advanced logging and debugging options #1399
    • Symbolic execution engine with higher priority and fewer false UNSAT verdicts #1514 #1528 #1521
    • UI/UX improvements for test sources root, setting.properties file, cancellation, timeout settings, notifications #1010 #1519 #1439 #1420 #1311
    • Summaries with fine-grained settings #1442 #1452
    • SARIF reports enabled by default, displaying sandbox-related and timeout test failures, properly addressing source files #1471 #1496 #1364 #1456
    • Improved monitoring visualized with Grafana #1523 #1363 #1328
    • Test generation bug fixes #1525 #1561 #1508 #1502 #1495 #1491 #1483 #1458 #1450 #1447 #1424 #1410 #1408 #1389 #1343
    • Detailed documentation on UnitTestBot components including UnitTestBot architecture overview #1565 #1559 #1453 #1457 #1501 #1417 #1465

    Visit UnitTestBot website. Share your feedback and join our project.

    Source code(tar.gz)
    Source code(zip)
    utbot-intellij-2022.12.zip(124.05 MB)
    utbot-rider-2022.12-beta.zip(62.41 MB)
  • 2022.11(Nov 7, 2022)

    Try out the latest release and get even better test generation experience. Check what we've added to UnitTestBot:

    • Engine #1261 and solver #1265 performance improvements — supplemented with fixes to make engine run smoother #386 #1228
    • Enhanced test generation for Kotlin code #1190 #1191 #1200 #1241 including support for top-level Kotlin functions #847
    • Streamlined support for Java streams #1229
    • Improvements for parameterized test generation #1137 #1221 #1231
    • Fuzzer optimizations for more effective minimization #1129 #1225 along with improved sandboxing #1134
    • Fixes for generating more accurate test descriptions #1212
    • Documentation on custom Javadoc tags feature #1085
    • Plugin UX/UI improvements #1017 #1119 #1059 #1149 #1184 #1186 #1195 #1196 #1209 #1224 #1226
    • Better SARIF report generation #1223 and a brand-new built-in SARIF report visualizer #1166

    Share your feedback and feel free to join us.

    Source code(tar.gz)
    Source code(zip)
    utbot-cli-2022.11.zip(98.86 MB)
    utbot-intellij-2022.11.zip(98.07 MB)
  • 2022.10.1(Oct 17, 2022)

    Our first stable release of UnitTestBot is now available. It introduces ultimate quality improvements and offers new features to make automated test generation more powerful and versatile.

    Check what's new in UnitTestBot:

    • Support for the latest IntelliJ IDEA 2022.2.2 (JRE 17)
    • Custom UnitTestBot tags in Javadoc comments
    • Fuzzing tests for Generics and Date classes
    • UI/UX improvements

    Try out the release version and give us feedback. If you have questions, please refer to our user guide.

    Source code(tar.gz)
    Source code(zip)
    utbot-intellij-2022.10.1.zip(97.91 MB)
  • 2022.10(Oct 6, 2022)

    Our first stable release of UnitTestBot is now available. It introduces ultimate quality improvements and offers new features to make automated test generation more powerful and versatile.

    Check what's new in UnitTestBot:

    • Support for the latest IntelliJ IDEA 2022.2 (JRE 17)
    • UI/UX improvements
    • Sandboxing executions of a suspicious code
    • Support for nested classes, hidden fields and queues
    • Fuzzing: generating tests for Generics and Date classes, support for methods with no parameters and fields with public setters
    • Parameterized tests improvements
    • Ability to create and run tests at once
    • Custom UnitTestBot tags in Javadoc comments
    • UtUtils class incapsulating test util methods
    • Bug fixes
    • User guide and design docs

    Try out the release version and give us feedback. If you have questions, please refer to our user guide.

    What's Changed

    • Fix searching of modifiers field for JDK 8-17 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/408
    • Support -P parameters in the utbot-gradle by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/377
    • Added ForceStaticMockListener to run "configure mockito-inline" action. by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/438
    • Fixed NPE for processing static field as first statement in MUT by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/433
    • Disabled NPE checks for non-public library fields by default by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/353
    • Removed always used coverage-based minimization strategy for plugin by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/450
    • Minimize exceptions in signature by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/418
    • Extract Traverser from UtBotSymbolicEngine by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/307
    • Add summary tests for ListWrapperReturnsVoidExample by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/444
    • Support startColumn field in the SARIF report by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/454
    • Remove duplicates in SARIF report by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/474
    • Minimize UtExecution number produced by fuzzing and collect coverage statistics by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/465
    • Optimized dependencies by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/480
    • Disable action in editor for the file located in test source root by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/478
    • Fix the way of setting static final fields by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/466
    • assertArrayEquals overload is not found, tests doesn't compile #135 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/464
    • Empty tooltips are shown on Java plugin popup #420 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/479
    • Prepare plugin for 2022.7-beta release #441 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/442
    • Test generation is enabled for interfaces via shortcut and menu actio… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/487
    • Use ClassId name in prettifiedName if canonical name is null by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/484
    • UI. IDEA plugin dialog. Test framework is reset to JUnit5 on selectin… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/489
    • Show exception stack trace if it happens in user code #368 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/477
    • Make specify destination package option invisible #488 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/495
    • Fuzzer should change objects with its public setters by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/439
    • Turn of fuzzing for AbstractModelBasedTest.kt by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/506
    • Improve code generation pipeline by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/455
    • Add the field testPrivateMethods in utbot-gradle by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/483
    • Fix incomplete results in the SARIF report by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/471
    • Add sarif results minimization #490 by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/498
    • Default value of codegen language and test framework is improved in UI #499 #500 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/507
    • Wrong wrapper for valueOf in parametrized tests #512 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/513
    • Improve overloadings check in generated code #370 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/503
    • Create symbolic link by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/502
    • Update symbolic link by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/521
    • Generate test by fuzzing for methods with no parameters #511 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/515
    • Rename UtTestCase #519 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/517
    • Change private expectedResult type to Object in generated parametrized tests #528 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/529
    • Enable Java assertions in framework integration tests by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/539
    • Test report reworked (#522) by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/523
    • Provide references to invoked methods in summary by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/476
    • Fix possible NPE for package name in rarely cases by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/544
    • Capitalize method names properly by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/504
    • Improve plugin behavior classes/packages with no methods #516 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/533
    • Disabled tests for autogenerated functions #457 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/505
    • Better PR description by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/486
    • Removed external library and added clustering algorithm by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/532
    • Refactor TestCaseGenerator and CodeGenerator and their usages #508 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/540
    • Test report for multiple classes by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/553
    • Try another approach to mark hanging generated tests #371 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/554
    • Stricter check for enum classes in EnumModelProvider #558 by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/559
    • Required libraries can be installed silently #492 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/494
    • Follow-up fix for 0c84e2f by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/557
    • Implement new approach to create variables in parametrized tests by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/547
    • Add an option to control fuzzing #451 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/552
    • Added pre-condition for non-empty paths in the ExecutionMetric to avoid unclear NPE #267 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/567
    • Already created test source root is not found in Idea project #497 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/568
    • Optimized module dependencies by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/569
    • Fuzzing is not stopped on timeout when symbolic execution is excluded #570 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/574
    • Revert missed changes for default values in UI by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/575
    • Manual checklist template: check plugin size by @alisevych in https://github.com/UnitTestBot/UTBotJava/pull/362
    • Remove obsolete fuzzing code and update readme.md #467 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/530
    • Fixed the weird logic in the of error messages in SummaryTestCaseGeneratorTest #383 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/572
    • Improve processing CgNotNullAssertion in deepEquals by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/582
    • Parametrized test generation in Uber tests #541 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/573
    • Added an approach to differ tests produced by Fuzzer and SymbolicExecutor #581 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/583
    • UI. Gradle project. Test sources root can be located anywhere #549 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/577
    • Fix expected number of generated methods counter #589 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/590
    • Naming conventions added by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/564
    • Added links to utbot.org and JB Marketplace by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/514
    • Added a few tests to check generated clustering comments #384 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/595
    • IndexNotReadyException thrown in IDEA with installed UnitTestBot plug… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/586
    • Overflow in fuzzing #588 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/604
    • Make the peek method behaviour in the path selector deterministic #598 by @CaelmBleidd in https://github.com/UnitTestBot/UTBotJava/pull/600
    • Skip test generation for abstract methods #550 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/556
    • Generate parametrized test for methods without force mocking in Uber and sample tests #591 #596 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/608
    • "State is null" error fix for parametrized test generation by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/614
    • Refactor code related to block construction by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/571
    • An attempt to avoid UtMethod in codegen by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/602
    • Change type of 'actual' variable by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/631
    • Support parametrized test generation for constructors, even with parameters by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/637
    • Stacktraces in comments should be escaped #609 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/638
    • IDEA intention actions could help us with readability of generated co… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/615
    • Generate DisplayName annotation only for JUnit 5 #576 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/624
    • Fixed missing support of manual UtSettings update by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/654
    • Fix engine to properly handle hidden fields #647 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/627
    • Replace Class<*> with ClassId in the CodeGenerator constructor by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/659
    • Generate separated parametrized tests when we have different result types by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/652
    • Test generation fails if any unexpected exception occurs for a single method #661 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/662
    • Make UtEnumConstModel and UtClassRefModel reference models #414 by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/611
    • Fuzzer fails with IllegalStateException #655 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/663
    • Add statics support in parametrized tests generation #612 #672 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/671
    • Ability to create and run tests at once #156 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/670
    • Vassiliy kudryashov/651 write access exception during new sarif file generation by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/674
    • Enlarge the set of cases when we try to create parametrized tests by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/678
    • Timeout spinner should apply current value #675 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/676
    • NoSuchMethodError is thrown for Generate & Run action #679 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/681
    • Show error window if no test source root were found (#657) by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/680
    • Summaries for tests generated by fuzzer are generated in the summary module #597 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/599
    • Remove CLI: publish image workflow by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/687
    • Android Studio fixes (#634, #635) by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/639
    • Test generation details are not accessible as Event Log tool window w… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/688
    • Improve exception rendering in parametrized tests by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/690
    • Fix empty true branch & correct generic execution selection logic in parametrized test generation #683 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/682
    • java.net.URISyntaxException: Illegal character in path #587 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/702
    • Add new test for deepequals on object with nullable reference fields #696 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/698
    • Fuzzing fails in concrete execution sometimes #706 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/708
    • Explicitly set the child process working directory if we run the plugin #694 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/695
    • Fix codegen to generate tests for nested classes into nested testclasses #560 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/665
    • Prohibit to set static fields from library classes #697 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/699
    • Updated Readme content by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/685
    • Fix direct assigning of fields with private type #731 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/735
    • Add unit tests for builders #543 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/734
    • Fix the child process debug commands order #736 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/737
    • IntelliJ plugin, Gradle, Kotlin, Java version upgrade by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/429
    • Disable JVM option for Java metrics by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/751
    • Dependency from utbot-cli to utbot-summary by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/752
    • corrected ClassId.isAccessibleFrom behavior on arrays #743 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/744
    • Add SecurityManager support to block suspicious code #622 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/625
    • UI. Gradle project. Suggest all Test sources roots for test generatio… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/705
    • Added the ClassId for ParametrizedType by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/766
    • Follow up fix for PR-705 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/776
    • Mutate values to improve code coverage #213 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/713
    • passing all secrets into reusable workflow by @bissquit in https://github.com/UnitTestBot/UTBotJava/pull/771
    • Fix duplication of nested testclasses #779 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/780
    • Enables utbot-analytics module in utbot-intellij module by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/733
    • Introduce custom JavaDoc tags #565 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/585
    • Don't run tests when publishing plugin and CLI by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/784
    • Add support for nullable fields in deep equals by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/768
    • Updated gradle configuration by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/764
    • Use regex for generating string when regex pattern is found #778 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/793
    • Cannot find utbot-fuzzing.jar fix by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/795
    • Fix CLI build without tests by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/799
    • Minor refactoring in SimpleCommentBuildr and CustomJavaDocCommentBuilder by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/788
    • Older versions of IDE support by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/798
    • Optimize agents using by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/806
    • Fixes for analysis of reflection and Unsafe #721 by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/797
    • DeepEquals: generate absent assertion by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/813
    • Night Statistics Monitoring by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/701
    • Fix 'Cannot expand zip as it does not exist' when build utbot-cli by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/816
    • Rd-gen by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/748
    • Proper IntelliJ version constraints by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/817
    • Refactored scripts location by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/815
    • Enhance fuzzing for arrays #738 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/755
    • Add support for nested classes to UI #649 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/726
    • Introduce utbot-framework-test project by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/810
    • Java 8 RDgen fix by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/824
    • Add wrappers for queues #524 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/822
    • Cleanup build.gradle in utbot-samples by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/828
    • Rd logs by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/834
    • Cg util class by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/689
    • Move the Torch wrapper to the separate module by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/821
    • Inconsistent DisplayName is generated for a Collection used as the only parameter #684 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/840
    • Fixed some parts in renaming ML related stuff by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/839
    • Make UtExecution abstract, introduce UtFailedExecution as its child by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/804
    • Add back cross reference test by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/846
    • Add Junit5-params dependency for projects without it when needed #620 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/829
    • Fix soot initialization #849 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/855
    • Fix coverage calculation by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/856
    • Restructure gradle dependencies by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/827
    • Implicit unpermitted operations should be sandboxed #791 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/838
    • Manual testing checklist template update by @alisevych in https://github.com/UnitTestBot/UTBotJava/pull/841
    • Run monitoring manually by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/860
    • SysReq and minor updates to README added by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/741
    • Replace disableSandbox with useSandbox in UtSettings by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/857
    • Enable utbot-maven module #867 by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/869
    • Support hidden fields in code generation by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/763
    • Do not generate JavaDocs for empty comments #280 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/866
    • Adds a cluster comment for tests produced by Smart Fuzzer by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/858
    • UtMethod removal by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/862
    • Sort dependencies in user build file by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/868
    • Fix incorrect highlighting of the method call in sarif (#536) by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/876
    • Labels for templates: bug and enhancement by @alisevych in https://github.com/UnitTestBot/UTBotJava/pull/889
    • Fixed issue with uncompiled module utbot-analytics-torch by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/894
    • Handle RecursionAssignment, SwitchCase, and CaughtException statement types in CustomJavaDocCommentBuilder by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/888
    • Concrete executor rd logs by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/902
    • Corrected synthetic FuzzedMethodDescription for fuzzing thisInstance #892 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/897
    • Fix fuzzing enum in recursion by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/907
    • UI action is disabled for several selected classes or packages #882 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/896
    • "Generate and Run" action doesn't initiate test run #709 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/887
    • fix git related issue #905 by @bissquit in https://github.com/UnitTestBot/UTBotJava/pull/906
    • Get static field concretly by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/904
    • No true branch test is generated for code with String.split(";\s") #885 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/914
    • Update Soot and choose an analyzable JRE #373 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/890
    • Move getting srcClassName inside ReadAction in plugin #729 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/851
    • Concrete executor logs by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/921
    • Fuzzing dates by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/929
    • Improve settings, part 1 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/898
    • jvm and container monitoring disabled by @bissquit in https://github.com/UnitTestBot/UTBotJava/pull/927
    • additional fix of checkout with custom commit sha by @bissquit in https://github.com/UnitTestBot/UTBotJava/pull/931
    • Get rid of "Android" plugin dependency #934 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/935
    • Support anonymous classes by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/760
    • Correct Parametrized tests checkbox functioning #933 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/938
    • Plugin UI. UnsupportedOperationException is thrown when new test sour… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/939
    • Contributing guide and related docs updated by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/861
    • Added simplification/rewriting for assumptions by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/940
    • Support lambda expressions by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/825
    • Migration ComboboxWithBrowseButton -> ComponentWithBrowseButton by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/953
    • Add build number to the published plugin by @alisevych in https://github.com/UnitTestBot/UTBotJava/pull/918
    • Add an option to show library classes' graphs in visualization by @CaelmBleidd in https://github.com/UnitTestBot/UTBotJava/pull/947
    • Dockefile of CLI is based on Java 11 by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/963
    • Mark distinct test for Stream as slow by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/967
    • Add JavaDoc comment style setting #774 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/922
    • Settings cannot be loaded because of NullPointerException #951 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/952
    • Fix CE by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/973
    • Reduce concurrent jobs number for projects by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/945
    • UtAssembleModel refactor #812 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/970
    • Added a clustering comments for the tests with empty path by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/969
    • Vassiliy kudryashov/693 deprecated api usages in the plugin should be replaced with stable api calls by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/982
    • Fix empty else-branch in parameterized test generation by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/908
    • Disable test generation for private nested classes in plugin #864 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/865
    • Fix for filtering anonymous function types by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/984
    • Publish utbot-rd on GitHub Packages by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/993
    • Switch to kts by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/976
    • Disabled concrete execution for lambda results by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/989
    • Fixed wrong targets for virtual invokes by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/925
    • Class not found fix #643 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/996
    • Disabled testPredicateNotExample by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/1000
    • Disable test generation for Kotlin getters/setters #911 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/1003
    • Support more ide versions by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/995
    • Disable testIsValidUuid as flaky by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/1005
    • Check for ArrayStoreException on array update by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/971
    • Fuzzer should generate tests for simple collection with generic types #875 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/988
    • "Test generation method" setting UI update #863 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/1008
    • Removed wrong formatting by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/1006
    • Codegen unable to properly instantiate public inner classes #761 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/1009
    • Replace Kotlin getters/setters with property access in codegen #496 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/1002
    • Multiple values for custom javadoc tags by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/987
    • Use read action to access documents #850 by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/979
    • Primitive Stream wrappers (no laziness and source mutations support) by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/871
    • Avoid summary duplication #985 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/1015
    • Fix bug in filtering Kotlin getters/setters in plugin by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/1026

    New Contributors

    • @sofurihafe made their first contribution in https://github.com/UnitTestBot/UTBotJava/pull/418
    • @olganaumenko made their first contribution in https://github.com/UnitTestBot/UTBotJava/pull/564
    • @ArsenHD made their first contribution in https://github.com/UnitTestBot/UTBotJava/pull/571

    Full Changelog: https://github.com/UnitTestBot/UTBotJava/compare/2022.7-beta...2022.10

    What's Changed

    • Fix searching of modifiers field for JDK 8-17 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/408
    • Support -P parameters in the utbot-gradle by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/377
    • Added ForceStaticMockListener to run "configure mockito-inline" action. by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/438
    • Fixed NPE for processing static field as first statement in MUT by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/433
    • Disabled NPE checks for non-public library fields by default by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/353
    • Removed always used coverage-based minimization strategy for plugin by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/450
    • Minimize exceptions in signature by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/418
    • Extract Traverser from UtBotSymbolicEngine by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/307
    • Add summary tests for ListWrapperReturnsVoidExample by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/444
    • Support startColumn field in the SARIF report by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/454
    • Remove duplicates in SARIF report by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/474
    • Minimize UtExecution number produced by fuzzing and collect coverage statistics by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/465
    • Optimized dependencies by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/480
    • Disable action in editor for the file located in test source root by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/478
    • Fix the way of setting static final fields by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/466
    • assertArrayEquals overload is not found, tests doesn't compile #135 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/464
    • Empty tooltips are shown on Java plugin popup #420 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/479
    • Prepare plugin for 2022.7-beta release #441 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/442
    • Test generation is enabled for interfaces via shortcut and menu actio… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/487
    • Use ClassId name in prettifiedName if canonical name is null by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/484
    • UI. IDEA plugin dialog. Test framework is reset to JUnit5 on selectin… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/489
    • Show exception stack trace if it happens in user code #368 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/477
    • Make specify destination package option invisible #488 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/495
    • Fuzzer should change objects with its public setters by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/439
    • Turn of fuzzing for AbstractModelBasedTest.kt by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/506
    • Improve code generation pipeline by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/455
    • Add the field testPrivateMethods in utbot-gradle by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/483
    • Fix incomplete results in the SARIF report by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/471
    • Add sarif results minimization #490 by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/498
    • Default value of codegen language and test framework is improved in UI #499 #500 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/507
    • Wrong wrapper for valueOf in parametrized tests #512 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/513
    • Improve overloadings check in generated code #370 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/503
    • Create symbolic link by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/502
    • Update symbolic link by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/521
    • Generate test by fuzzing for methods with no parameters #511 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/515
    • Rename UtTestCase #519 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/517
    • Change private expectedResult type to Object in generated parametrized tests #528 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/529
    • Enable Java assertions in framework integration tests by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/539
    • Test report reworked (#522) by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/523
    • Provide references to invoked methods in summary by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/476
    • Fix possible NPE for package name in rarely cases by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/544
    • Capitalize method names properly by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/504
    • Improve plugin behavior classes/packages with no methods #516 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/533
    • Disabled tests for autogenerated functions #457 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/505
    • Better PR description by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/486
    • Removed external library and added clustering algorithm by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/532
    • Refactor TestCaseGenerator and CodeGenerator and their usages #508 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/540
    • Test report for multiple classes by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/553
    • Try another approach to mark hanging generated tests #371 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/554
    • Stricter check for enum classes in EnumModelProvider #558 by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/559
    • Required libraries can be installed silently #492 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/494
    • Follow-up fix for 0c84e2f by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/557
    • Implement new approach to create variables in parametrized tests by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/547
    • Add an option to control fuzzing #451 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/552
    • Added pre-condition for non-empty paths in the ExecutionMetric to avoid unclear NPE #267 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/567
    • Already created test source root is not found in Idea project #497 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/568
    • Optimized module dependencies by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/569
    • Fuzzing is not stopped on timeout when symbolic execution is excluded #570 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/574
    • Revert missed changes for default values in UI by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/575
    • Manual checklist template: check plugin size by @alisevych in https://github.com/UnitTestBot/UTBotJava/pull/362
    • Remove obsolete fuzzing code and update readme.md #467 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/530
    • Fixed the weird logic in the of error messages in SummaryTestCaseGeneratorTest #383 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/572
    • Improve processing CgNotNullAssertion in deepEquals by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/582
    • Parametrized test generation in Uber tests #541 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/573
    • Added an approach to differ tests produced by Fuzzer and SymbolicExecutor #581 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/583
    • UI. Gradle project. Test sources root can be located anywhere #549 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/577
    • Fix expected number of generated methods counter #589 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/590
    • Naming conventions added by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/564
    • Added links to utbot.org and JB Marketplace by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/514
    • Added a few tests to check generated clustering comments #384 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/595
    • IndexNotReadyException thrown in IDEA with installed UnitTestBot plug… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/586
    • Overflow in fuzzing #588 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/604
    • Make the peek method behaviour in the path selector deterministic #598 by @CaelmBleidd in https://github.com/UnitTestBot/UTBotJava/pull/600
    • Skip test generation for abstract methods #550 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/556
    • Generate parametrized test for methods without force mocking in Uber and sample tests #591 #596 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/608
    • "State is null" error fix for parametrized test generation by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/614
    • Refactor code related to block construction by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/571
    • An attempt to avoid UtMethod in codegen by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/602
    • Change type of 'actual' variable by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/631
    • Support parametrized test generation for constructors, even with parameters by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/637
    • Stacktraces in comments should be escaped #609 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/638
    • IDEA intention actions could help us with readability of generated co… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/615
    • Generate DisplayName annotation only for JUnit 5 #576 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/624
    • Fixed missing support of manual UtSettings update by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/654
    • Fix engine to properly handle hidden fields #647 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/627
    • Replace Class<*> with ClassId in the CodeGenerator constructor by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/659
    • Generate separated parametrized tests when we have different result types by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/652
    • Test generation fails if any unexpected exception occurs for a single method #661 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/662
    • Make UtEnumConstModel and UtClassRefModel reference models #414 by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/611
    • Fuzzer fails with IllegalStateException #655 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/663
    • Add statics support in parametrized tests generation #612 #672 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/671
    • Ability to create and run tests at once #156 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/670
    • Vassiliy kudryashov/651 write access exception during new sarif file generation by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/674
    • Enlarge the set of cases when we try to create parametrized tests by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/678
    • Timeout spinner should apply current value #675 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/676
    • NoSuchMethodError is thrown for Generate & Run action #679 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/681
    • Show error window if no test source root were found (#657) by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/680
    • Summaries for tests generated by fuzzer are generated in the summary module #597 by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/599
    • Remove CLI: publish image workflow by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/687
    • Android Studio fixes (#634, #635) by @nikitavlaev in https://github.com/UnitTestBot/UTBotJava/pull/639
    • Test generation details are not accessible as Event Log tool window w… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/688
    • Improve exception rendering in parametrized tests by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/690
    • Fix empty true branch & correct generic execution selection logic in parametrized test generation #683 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/682
    • java.net.URISyntaxException: Illegal character in path #587 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/702
    • Add new test for deepequals on object with nullable reference fields #696 by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/698
    • Fuzzing fails in concrete execution sometimes #706 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/708
    • Explicitly set the child process working directory if we run the plugin #694 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/695
    • Fix codegen to generate tests for nested classes into nested testclasses #560 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/665
    • Prohibit to set static fields from library classes #697 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/699
    • Updated Readme content by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/685
    • Fix direct assigning of fields with private type #731 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/735
    • Add unit tests for builders #543 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/734
    • Fix the child process debug commands order #736 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/737
    • IntelliJ plugin, Gradle, Kotlin, Java version upgrade by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/429
    • Disable JVM option for Java metrics by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/751
    • Dependency from utbot-cli to utbot-summary by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/752
    • corrected ClassId.isAccessibleFrom behavior on arrays #743 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/744
    • Add SecurityManager support to block suspicious code #622 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/625
    • UI. Gradle project. Suggest all Test sources roots for test generatio… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/705
    • Added the ClassId for ParametrizedType by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/766
    • Follow up fix for PR-705 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/776
    • Mutate values to improve code coverage #213 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/713
    • passing all secrets into reusable workflow by @bissquit in https://github.com/UnitTestBot/UTBotJava/pull/771
    • Fix duplication of nested testclasses #779 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/780
    • Enables utbot-analytics module in utbot-intellij module by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/733
    • Introduce custom JavaDoc tags #565 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/585
    • Don't run tests when publishing plugin and CLI by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/784
    • Add support for nullable fields in deep equals by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/768
    • Updated gradle configuration by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/764
    • Use regex for generating string when regex pattern is found #778 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/793
    • Cannot find utbot-fuzzing.jar fix by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/795
    • Fix CLI build without tests by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/799
    • Minor refactoring in SimpleCommentBuildr and CustomJavaDocCommentBuilder by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/788
    • Older versions of IDE support by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/798
    • Optimize agents using by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/806
    • Fixes for analysis of reflection and Unsafe #721 by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/797
    • DeepEquals: generate absent assertion by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/813
    • Night Statistics Monitoring by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/701
    • Fix 'Cannot expand zip as it does not exist' when build utbot-cli by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/816
    • Rd-gen by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/748
    • Proper IntelliJ version constraints by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/817
    • Refactored scripts location by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/815
    • Enhance fuzzing for arrays #738 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/755
    • Add support for nested classes to UI #649 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/726
    • Introduce utbot-framework-test project by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/810
    • Java 8 RDgen fix by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/824
    • Add wrappers for queues #524 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/822
    • Cleanup build.gradle in utbot-samples by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/828
    • Rd logs by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/834
    • Cg util class by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/689
    • Move the Torch wrapper to the separate module by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/821
    • Inconsistent DisplayName is generated for a Collection used as the only parameter #684 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/840
    • Fixed some parts in renaming ML related stuff by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/839
    • Make UtExecution abstract, introduce UtFailedExecution as its child by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/804
    • Add back cross reference test by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/846
    • Add Junit5-params dependency for projects without it when needed #620 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/829
    • Fix soot initialization #849 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/855
    • Fix coverage calculation by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/856
    • Restructure gradle dependencies by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/827
    • Implicit unpermitted operations should be sandboxed #791 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/838
    • Manual testing checklist template update by @alisevych in https://github.com/UnitTestBot/UTBotJava/pull/841
    • Run monitoring manually by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/860
    • SysReq and minor updates to README added by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/741
    • Replace disableSandbox with useSandbox in UtSettings by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/857
    • Enable utbot-maven module #867 by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/869
    • Support hidden fields in code generation by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/763
    • Do not generate JavaDocs for empty comments #280 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/866
    • Adds a cluster comment for tests produced by Smart Fuzzer by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/858
    • UtMethod removal by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/862
    • Sort dependencies in user build file by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/868
    • Fix incorrect highlighting of the method call in sarif (#536) by @IdeaSeeker in https://github.com/UnitTestBot/UTBotJava/pull/876
    • Labels for templates: bug and enhancement by @alisevych in https://github.com/UnitTestBot/UTBotJava/pull/889
    • Fixed issue with uncompiled module utbot-analytics-torch by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/894
    • Handle RecursionAssignment, SwitchCase, and CaughtException statement types in CustomJavaDocCommentBuilder by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/888
    • Concrete executor rd logs by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/902
    • Corrected synthetic FuzzedMethodDescription for fuzzing thisInstance #892 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/897
    • Fix fuzzing enum in recursion by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/907
    • UI action is disabled for several selected classes or packages #882 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/896
    • "Generate and Run" action doesn't initiate test run #709 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/887
    • fix git related issue #905 by @bissquit in https://github.com/UnitTestBot/UTBotJava/pull/906
    • Get static field concretly by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/904
    • No true branch test is generated for code with String.split(";\s") #885 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/914
    • Update Soot and choose an analyzable JRE #373 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/890
    • Move getting srcClassName inside ReadAction in plugin #729 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/851
    • Concrete executor logs by @Domonion in https://github.com/UnitTestBot/UTBotJava/pull/921
    • Fuzzing dates by @SBOne-Kenobi in https://github.com/UnitTestBot/UTBotJava/pull/929
    • Improve settings, part 1 by @EgorkaKulikov in https://github.com/UnitTestBot/UTBotJava/pull/898
    • jvm and container monitoring disabled by @bissquit in https://github.com/UnitTestBot/UTBotJava/pull/927
    • additional fix of checkout with custom commit sha by @bissquit in https://github.com/UnitTestBot/UTBotJava/pull/931
    • Get rid of "Android" plugin dependency #934 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/935
    • Support anonymous classes by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/760
    • Correct Parametrized tests checkbox functioning #933 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/938
    • Plugin UI. UnsupportedOperationException is thrown when new test sour… by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/939
    • Contributing guide and related docs updated by @olganaumenko in https://github.com/UnitTestBot/UTBotJava/pull/861
    • Added simplification/rewriting for assumptions by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/940
    • Support lambda expressions by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/825
    • Migration ComboboxWithBrowseButton -> ComponentWithBrowseButton by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/953
    • Add build number to the published plugin by @alisevych in https://github.com/UnitTestBot/UTBotJava/pull/918
    • Add an option to show library classes' graphs in visualization by @CaelmBleidd in https://github.com/UnitTestBot/UTBotJava/pull/947
    • Dockefile of CLI is based on Java 11 by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/963
    • Mark distinct test for Stream as slow by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/967
    • Add JavaDoc comment style setting #774 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/922
    • Settings cannot be loaded because of NullPointerException #951 by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/952
    • Fix CE by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/973
    • Reduce concurrent jobs number for projects by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/945
    • UtAssembleModel refactor #812 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/970
    • Added a clustering comments for the tests with empty path by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/969
    • Vassiliy kudryashov/693 deprecated api usages in the plugin should be replaced with stable api calls by @Vassiliy-Kudryashov in https://github.com/UnitTestBot/UTBotJava/pull/982
    • Fix empty else-branch in parameterized test generation by @sofurihafe in https://github.com/UnitTestBot/UTBotJava/pull/908
    • Disable test generation for private nested classes in plugin #864 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/865
    • Fix for filtering anonymous function types by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/984
    • Publish utbot-rd on GitHub Packages by @victoriafomina in https://github.com/UnitTestBot/UTBotJava/pull/993
    • Switch to kts by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/976
    • Disabled concrete execution for lambda results by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/989
    • Fixed wrong targets for virtual invokes by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/925
    • Class not found fix #643 by @sergeypospelov in https://github.com/UnitTestBot/UTBotJava/pull/996
    • Disabled testPredicateNotExample by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/1000
    • Disable test generation for Kotlin getters/setters #911 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/1003
    • Support more ide versions by @denis-fokin in https://github.com/UnitTestBot/UTBotJava/pull/995
    • Disable testIsValidUuid as flaky by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/1005
    • Check for ArrayStoreException on array update by @dtim in https://github.com/UnitTestBot/UTBotJava/pull/971
    • Fuzzer should generate tests for simple collection with generic types #875 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/988
    • "Test generation method" setting UI update #863 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/1008
    • Removed wrong formatting by @amandelpie in https://github.com/UnitTestBot/UTBotJava/pull/1006
    • Codegen unable to properly instantiate public inner classes #761 by @Markoutte in https://github.com/UnitTestBot/UTBotJava/pull/1009
    • Replace Kotlin getters/setters with property access in codegen #496 by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/1002
    • Multiple values for custom javadoc tags by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/987
    • Use read action to access documents #850 by @ArsenHD in https://github.com/UnitTestBot/UTBotJava/pull/979
    • Primitive Stream wrappers (no laziness and source mutations support) by @Damtev in https://github.com/UnitTestBot/UTBotJava/pull/871
    • Avoid summary duplication #985 by @onewhl in https://github.com/UnitTestBot/UTBotJava/pull/1015
    • Fix bug in filtering Kotlin getters/setters in plugin by @volivan239 in https://github.com/UnitTestBot/UTBotJava/pull/1026

    New Contributors

    • @olganaumenko made their first contribution in https://github.com/UnitTestBot/UTBotJava/pull/564
    • @ArsenHD made their first contribution in https://github.com/UnitTestBot/UTBotJava/pull/571

    Full Changelog: https://github.com/UnitTestBot/UTBotJava/compare/2022.7-beta...2022.10

    Source code(tar.gz)
    Source code(zip)
    utbot-intellij-2022.10.zip(97.62 MB)
  • 2022.7-beta(Jul 6, 2022)

    What's Changed

    In this version we have implemented multiple features and improvements:

    • Java 11 support. • Smart Fuzzer significantly improves test generation results. • Generated tests have become even more human-readable and user-friendly. • We have enabled Mac OS X platform, give it a try. • The UnitTestBot engine generates SARIF reports. • We have polished plugin UX. • Mocking support is enhanced. • Java Streams, better Java Optional support, Java String support is improved, package-private constructors now are used for the test generation.

    Discover everything mentioned above and much more in this release.

    Full Changelog: https://github.com/UnitTestBot/UTBotJava/compare/2022.5-alpha...2022.7-beta

    Source code(tar.gz)
    Source code(zip)
    utbot-intellij-2022.7-beta.zip(87.54 MB)
  • 2022.5-alpha(May 28, 2022)

    This is the very first alpha version of UTBotJava, automated test generator for Java. We tested it on Win64 and Linux64 and it currently doesn't work for MacOS (will be fixed soon).

    Give a try to our IntelliJ IDEA plugin (click to download). After plugin is installed you can run UTBot with few clicks.

    In this version:

    1. Generation of regression/error tests with a single action Generate tests with UtBot for folder, class or method.
    2. Statement and branch coverage maximization
    3. Tests in Error suite are generated for all implicitly thrown RuntimeException (e.g. NullPointerException, ArrayIndexOutOfBoundsException, etc.); these tests are failed by default (customizable in "File -> Settings -> UTBot")
    4. Tests that runs too long are put into Timeout suite
    5. Test that fails JVM are put into Crash suite
    6. Minimize number of generated test, not loosing coverage and detected errors
    7. Human-readable names and comments for generated tests
    Source code(tar.gz)
    Source code(zip)
    utbot-intellij-2022.5-alpha.zip(255.61 MB)
Owner
null
Android Studio plugin which automatically generates drawable selectors from appropriately named resources.

SelectorChapek for Android This Android Studio plugin automatically generates drawable selectors from appropriately named Android resources. How to in

Inmite s.r.o. 1.6k Dec 29, 2022
IntelliJ plugin that provides a modern and powerful byte code analyzer tool window.

IntelliJ Byte Code Analyzer Plugin This IntelliJ plugin provides a modern and powerful byte code analyzer tool window. Its supports Java, Kotlin, Groo

Marcel Kliemannel 29 Nov 9, 2022
CKlib is a gradle plugin that will build and package C/C++/Objective-C code for Kotlin/Native.

C Klib CKlib is a gradle plugin that will build and package C/C++/Objective-C code for Kotlin/Native. The Problem When you want to access C-etc code f

Touchlab 73 Nov 8, 2022
Process jacoco reports and print the code coverage to the Azure DevOps

PrintCoverage PrintCoverage plugin allows you easily integrate coverage badge into your Azure DevOps pull requests! How to use In the module build.gra

Intermedia Cloud Communications 4 Oct 15, 2021
Manage pull requests and conduct code reviews in your IDE with full source-tree context.

String Manipulation IntelliJ plugin - https://plugins.jetbrains.com/plugin/2162 Sponsored by Manage pull requests and conduct code reviews in your IDE

Vojtěch Krása 582 Dec 22, 2022
A webserver interface to the same methods and code that Cordova plugins install.

cordova-plugin-webserver Cordova plugin for localhost web server written in Kotlin and Ktor Install plugin cordova plugin add https://github.com/Qbix/

Qbix 0 May 5, 2022
IntelliJ Plugin for Android Parcelable boilerplate code generation.

IntelliJ/Android Studio Plugin for Android Parcelable boilerplate code generation This tool generates an Android Parcelable implementation based on fi

Michał Charmas 2.1k Dec 27, 2022
A plugin for Jetbrains IDE, Your code is powerful, unleash it like playing osu!

Osu! Mode A plugin for Jetbrains IDE, Your code is powerful, unleash it like playing osu! Demo 2021-10-15.18-50-30.mp4 Bilibili Feature open project /

Nthily 8 Sep 8, 2022
Intellij Idea Plugin that can convert HTML to Compose for Web code.

HtmlToComposeWebConverter Intellij Idea Plugin that can convert HTML to Compose for Web code. Turn this: Into this: Show some ❤️ and star the repo to

Jens Klingenberg 90 Oct 10, 2022
Kirill Rakhman 4 Sep 15, 2022
An IntelliJ IDEA plugin is used to inspire you to write code.

InspireWritingPlugin An IntelliJ IDEA plugin is used to inspire you to write code. Whenever you write code that exceeds the specified character, the p

Airsaid 6 Feb 11, 2021
Ownership-gradle-plugin - Gradle code ownership verification plugin

Gradle code ownership verification plugin A gradle plugin that will verify owner

null 4 Dec 15, 2022
Social share - Social Sharing Plugin For Private Use only (Code without error checking)

Flutter Social Share plugin for sharing file to media with multiple (More option

MP IT SPACE 0 Mar 19, 2022
Dokka plugin to render Mermaid graphics, from your code comments to your Dokka documentation.

Dokka plugin to render Mermaid graphics, from your code comments to your Dokka documentation.

Grégory Lureau 24 Jan 7, 2023
GPP is Android's unofficial release automation Gradle Plugin. It can do anything from building, uploading, and then promoting your App Bundle or APK to publishing app listings and other metadata.

Gradle Play Publisher Gradle Play Publisher is Android's unofficial release automation Gradle Plugin. It can do anything from building, uploading, and

null 3.9k Dec 30, 2022
Helper to upload Gradle Android Artifacts, Gradle Java Artifacts and Gradle Kotlin Artifacts to Maven repositories (JCenter, Maven Central, Corporate staging/snapshot servers and local Maven repositories).

GradleMavenPush Helper to upload Gradle Android Artifacts, Gradle Java Artifacts and Gradle Kotlin Artifacts to Maven repositories (JCenter, Maven Cen

 Vorlonsoft LLC 21 Oct 3, 2022
A plugin for Android Studio and Intellij IDEA that speeds up your day to day android development.

ADB Idea A plugin for Android Studio and Intellij IDEA that speeds up your day to day android development. The following commands are provided: Uninst

Philippe Breault 2k Dec 28, 2022
Maven Plugin for Android Application development and more

ANDROID MAVEN PLUGIN A plugin for Android application development with Apache Maven 3.0.5+ and the Android SDK. Please check out our website for furth

simpligility 1k Jan 4, 2023
Gradle plugin which downloads and manages your Android SDK.

DEPRECATED This plugin is deprecated and is no longer being developed. Tools and dependencies are automatically downloaded using version 2.2.0 of the

Jake Wharton 1.4k Dec 29, 2022