-
Notifications
You must be signed in to change notification settings - Fork 0
/
component---src-docs-java-fine-tune-test-generation-md-ed4b04b9f20d09722a1a.js.map
1 lines (1 loc) · 22.5 KB
/
component---src-docs-java-fine-tune-test-generation-md-ed4b04b9f20d09722a1a.js.map
1
{"version":3,"file":"component---src-docs-java-fine-tune-test-generation-md-ed4b04b9f20d09722a1a.js","mappings":"6RAMaA,EAAe,CAAC,OAAE,kPAC/B,IAAMC,EAAc,CAClBD,aAAAA,GAEIE,EAAYC,EAAAA,EACH,SAASC,EAAW,GAGhC,IAFDC,EAAU,EAAVA,WACGC,GAAK,YAER,OAAO,QAACJ,GAAS,UAAKD,EAAiBK,EAAK,CAAED,WAAYA,EAAYE,QAAQ,eAG5E,cACE,GAAM,gEAA8D,iEAEtE,cACE,GAAM,oBAAkB,qBAE1B,mBACE,cAAIC,WAAW,MAAI,mBAAoB,aAAGA,WAAW,KACjD,KAAQ,gDAA8C,wBACzB,8DAChB,mBAAS,uBACb,aAAGA,WAAW,KACvB,KAAQ,6BAA2B,WACnB,oHAGtB,gHAAkG,kBAAQA,WAAW,KAAG,WAAqB,UAAU,aAAGA,WAAW,IACjK,KAAQ,mGACP,kBAAQA,WAAW,KAAG,2BAAwC,OACnE,oBACA,cACE,GAAM,oBAAkB,qBAE1B,4BAAc,kBAAQA,WAAW,KAAG,mCAA6C,wBAAwB,kBAAQA,WAAW,KAAG,oBAA8B,MAC7J,mBACE,cAAIA,WAAW,OAAK,kBAAQA,WAAW,MAAI,eAAyB,gGACpE,cAAIA,WAAW,OAAK,kBAAQA,WAAW,MAAI,uCAAiD,6EAC5F,cAAIA,WAAW,OAAK,kBAAQA,WAAW,MAAI,qCAA+C,2EAE5F,kBAAG,cAAIA,WAAW,KAAG,YACrB,8DAAgD,kBAAQA,WAAW,KAAG,uBAAiC,MACvG,2CAA6B,kBAAQA,WAAW,KAAG,iCAA2C,6IACpB,aAAGA,WAAW,IACpF,KAAQ,yGACP,kBAAQA,WAAW,KAAG,iCAA8C,2BACzE,oBACA,cACE,GAAM,uBAAqB,wBAE7B,4BAAc,kBAAQA,WAAW,KAAG,mCAA6C,8BAA8B,kBAAQA,WAAW,KAAG,uBAAiC,MACtK,iRACA,oBACA,cACE,GAAM,gCAA8B,iCAEtC,2BAAa,kBAAQA,WAAW,KAAG,QAAkB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,OAAO,kBAAQA,WAAW,KAAG,SAAmB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,mBAAmB,kBAAQA,WAAW,KAAG,gCAA0C,MACpS,gFACA,yDAA2C,kBAAQA,WAAW,KAAG,iCAA2C,2CAC5G,yHACA,oBACA,cACE,GAAM,iCAA+B,kCAEvC,qCAAuB,kBAAQA,WAAW,KAAG,gCAA0C,oCAAoC,kBAAQA,WAAW,KAAG,iCAA2C,6BAC5L,kBAAG,sBAAYA,WAAW,KAAG,oBAAkC,MACjE,sBAAYA,WAAW,KAAG,oBAAkC,MAC5D,sBAAYA,WAAW,KAAG,2BAAyC,MACnE,sBAAYA,WAAW,KAAG,+BACxB,sEACA,+EACA,2HAA6G,cAAIA,WAAW,KAAG,4BAAkC,MAAM,cAAIA,WAAW,KAAG,iBAAuB,UAAU,cAAIA,WAAW,KAAG,WAAiB,gCAC7P,oBACA,mBACE,cAAIA,WAAW,MAAI,2FAErB,cACE,GAAM,uBAAqB,wBAE7B,+DAAiD,kBAAQA,WAAW,KAAG,mCAA6C,aACpH,8LACA,mEAAqD,kBAAQA,WAAW,KAAG,oBAA8B,MAAM,kBAAQA,WAAW,KAAG,eAAyB,6BAC9J,oBACA,mBACE,cAAIA,WAAW,MAAI,+EAErB,cACE,GAAM,qBAAmB,sBAE3B,4BAAc,kBAAQA,WAAW,KAAG,mCAA6C,iCAAiC,kBAAQA,WAAW,KAAG,qBAA+B,MAAM,kBAAQA,WAAW,KAAG,WAAqB,MAAM,kBAAQA,WAAW,KAAG,WAAqB,QAAQ,kBAAQA,WAAW,KAAG,UAAoB,MAC3T,8GACA,kBAAG,cAAIA,WAAW,KAAG,SAAe,mBAAmB,kBAAQA,WAAW,KAAG,YAAsB,mCAAmC,kBAAQA,WAAW,KAAG,uBAAiC,MAC7L,oBACA,mBACE,cAAIA,WAAW,MAAI,uGAErB,cACE,GAAM,2BAAyB,4BAEjC,uHACA,wBAAU,kBAAQA,WAAW,KAAG,QAAkB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,OAAO,kBAAQA,WAAW,KAAG,SAAmB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,oBAAoB,kBAAQA,WAAW,KAAG,2BAAqC,yFAC7R,oFACA,oBACA,mBACE,cAAIA,WAAW,MAAI,8CAErB,cACE,GAAM,qBAAmB,sBAE3B,kHAAoG,kBAAQA,WAAW,KAAG,mCAA6C,2EACvK,4BAAc,cAAIA,WAAW,KAAG,eAAqB,mDAAmD,cAAIA,WAAW,KAAG,uCAA6C,gFACvK,4BAAc,kBAAQA,WAAW,KAAG,qBAA+B,eAAe,cAAIA,WAAW,KAAG,uCAA6C,yCAAyC,aAAGA,WAAW,IACpM,KAAQ,yDAAuD,eAC3C,wEAAwE,cAAIA,WAAW,KAAG,aAAmB,8DACrI,oHAAsG,kBAAQA,WAAW,KAAG,qBAA+B,oGAAoG,aAAGA,WAAW,IACzQ,KAAQ,kEAAgE,kBACrD,kBAAQA,WAAW,KAAG,qBAA+B,wBAA4B,6GAA6G,aAAGA,WAAW,IAC/N,KAAQ,kEAAgE,qBAC9C,MAC9B,oBACA,mBACE,cAAIA,WAAW,MAAI,uEAErB,cACE,GAAM,sBAAoB,uBAE5B,oHACA,mBACE,cAAIA,WAAW,MAAI,mBAAoB,cAAIA,WAAW,MAAI,oDAA0D,kEACpH,cAAIA,WAAW,MAAI,mBAAoB,cAAIA,WAAW,MAAI,mBAAyB,kMACoB,mBAAS,kBACxG,kBAAQA,WAAW,MAAI,mCAA6C,yEAE9E,oBACA,cACE,GAAM,4DAA0D,6DAElE,yQAA2P,cAAIA,WAAW,KAAG,mCAAyC,sHACtT,4GACA,kBAAG,cAAIA,WAAW,KAAG,sBAAuB,aAAGA,WAAW,KACpD,KAAQ,oDAAkD,8BACvB,mDAAmD,aAAGA,WAAW,KACpG,KAAQ,yCAAuC,WAC/B,ibAAgb,aAAGA,WAAW,KAC9c,KAAQ,uDAAqD,oCACpB,gGAC/C,oBACA,cACE,GAAM,gDAA8C,mDAEtD,oZACA,2PAEA,2BAAa,kBAAQA,WAAW,KAAG,QAAkB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,OAAO,kBAAQA,WAAW,KAAG,SAAmB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,qEACjN,oBACA,cACE,GAAM,6CAA2C,gDAEnD,4BAAc,kBAAQA,WAAW,KAAG,mCAA6C,wCAAwC,cAAIA,WAAW,KAAG,oDAA0D,0CACrM,oBACA,cACE,GAAM,0BAAwB,2BAEhC,sDAAwC,kBAAQA,WAAW,KAAG,WAAqB,mBAAmB,kBAAQA,WAAW,KAAG,sBAAgC,YAC5J,2BAAa,kBAAQA,WAAW,KAAG,QAAkB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,OAAO,kBAAQA,WAAW,KAAG,SAAmB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,sFAAsF,kBAAQA,WAAW,KAAG,2BAAqC,gBAClW,8DAAgD,kBAAQA,WAAW,KAAG,WAAqB,QAAQ,kBAAQA,WAAW,KAAG,sBAAgC,yCACzJ,oBACA,cACE,GAAM,0CAAwC,2CAEhD,sFACA,oBACA,cACE,GAAM,yBAAuB,0BAE/B,2BAAa,kBAAQA,WAAW,KAAG,QAAkB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,OAAO,kBAAQA,WAAW,KAAG,SAAmB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,4DACjN,mBACE,cAAIA,WAAW,OAAK,kBAAQA,WAAW,MAAI,QAAkB,0DAC7D,cAAIA,WAAW,OAAK,kBAAQA,WAAW,MAAI,QAAkB,8FAE/D,oBACA,cACE,GAAM,sBAAoB,uBAE5B,2BAAa,kBAAQA,WAAW,KAAG,QAAkB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,OAAO,kBAAQA,WAAW,KAAG,SAAmB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,sEAAsE,kBAAQA,WAAW,KAAG,oBAA8B,QAAQ,kBAAQA,WAAW,KAAG,mBAA6B,gBACtY,oBACA,cACE,GAAM,yBAAuB,0BAE/B,2BAAa,kBAAQA,WAAW,KAAG,QAAkB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,OAAO,kBAAQA,WAAW,KAAG,SAAmB,OAAO,kBAAQA,WAAW,KAAG,eAAyB,iDACjN,mBACE,cAAIA,WAAW,OAAK,kBAAQA,WAAW,MAAI,sCAAgD,uFAC3F,cAAIA,WAAW,OAAK,kBAAQA,WAAW,MAAI,cAAwB,yEAErE,wFACA,kBAAG,cAAIA,WAAW,KAAG,SAAe,oHAAoH,kBAAQA,WAAW,KAAG,sBAAgC,QAAQ,kBAAQA,WAAW,KAAG,0BAAoC,KAGpR,CAAC,yOAEDJ,EAAWK,gBAAiB,C","sources":["webpack://unittestbot-web/./src/docs/java/Fine-tune-test-generation.md"],"sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/utbot-site-staging/utbot-site-staging/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n\n\n <h2 {...{\n \"id\": \"сonfigure-test-generation-according-to-your-testing-purposes\"\n }}>{`Сonfigure test generation according to your testing purposes`}</h2>\n <h3 {...{\n \"id\": \"mocking-settings\"\n }}>{`Mocking settings`}</h3>\n <ul>\n <li parentName=\"ul\">{`Are your units `}<a parentName=\"li\" {...{\n \"href\": \"https://martinfowler.com/bliki/UnitTest.html\"\n }}>{`solitary or sociable`}</a>{`? Do you need mocking? What kind of\nmocking if necessary?`}<br></br>{`\nUnitTestBot uses `}<a parentName=\"li\" {...{\n \"href\": \"https://site.mockito.org/\"\n }}>{`Mockito`}</a>{` framework to control dependencies in\nyour code during testing. Choose what you need or rely on the defaults.`}</li>\n </ul>\n <p>{`Note: currently, mocking is not available if you allocate all the test generation time for `}<strong parentName=\"p\">{`Fuzzing`}</strong>{` (see `}<a parentName=\"p\" {...{\n \"href\": \"https://github.com/UnitTestBot/UTBotJava/wiki/Fine-tune-test-generation#test-generation-method\"\n }}><strong parentName=\"a\">{`Test generation method`}</strong></a>{`).`}</p>\n <hr></hr>\n <h4 {...{\n \"id\": \"mocking-strategy\"\n }}>{`Mocking strategy`}</h4>\n <p>{`In the `}<strong parentName=\"p\">{`Generate Tests with UnitTestBot`}</strong>{` window choose your `}<strong parentName=\"p\">{`Mocking strategy`}</strong>{`:`}</p>\n <ul>\n <li parentName=\"ul\"><strong parentName=\"li\">{`Do not mock`}</strong>{` — If you want the unit under test to actually interact with its environment, mock nothing.`}</li>\n <li parentName=\"ul\"><strong parentName=\"li\">{`Mock everything outside the package`}</strong>{` — Mock everything around the current package except the system classes.`}</li>\n <li parentName=\"ul\"><strong parentName=\"li\">{`Mock everything outside the class`}</strong>{` — Mock everything around the target class except the system classes.`}</li>\n </ul>\n <p><em parentName=\"p\">{`Notes:`}</em></p>\n <p>{`This setting is inactive when you enable `}<strong parentName=\"p\">{`Parameterized tests`}</strong>{`.`}</p>\n <p>{`Please remember, that `}<strong parentName=\"p\">{`Classes to be forcedly mocked`}</strong>{` are mocked even if you choose to mock nothing or any other\nmocking option. This behavior is necessary for correct test generation. See `}<a parentName=\"p\" {...{\n \"href\": \"https://github.com/UnitTestBot/UTBotJava/wiki/Fine-tune-test-generation#force-mocking-static-methods\"\n }}><strong parentName=\"a\">{`Force mocking static methods`}</strong></a>{` for more information.`}</p>\n <hr></hr>\n <h4 {...{\n \"id\": \"mock-static-methods\"\n }}>{`Mock static methods`}</h4>\n <p>{`In the `}<strong parentName=\"p\">{`Generate Tests with UnitTestBot`}</strong>{` window you can choose to `}<strong parentName=\"p\">{`Mock static methods`}</strong>{`.`}</p>\n <p>{`This option became available with Mockito 3.4.0. You can mock static methods only if you choose to mock either package or class environment. If you mock nothing, you won't be able to mock static methods as well, except those which are forcedly mocked.`}</p>\n <hr></hr>\n <h4 {...{\n \"id\": \"force-mocking-static-methods\"\n }}>{`Force mocking static methods`}</h4>\n <p>{`Go to `}<strong parentName=\"p\">{`File`}</strong>{` > `}<strong parentName=\"p\">{`Settings...`}</strong>{` > `}<strong parentName=\"p\">{`Tools`}</strong>{` > `}<strong parentName=\"p\">{`UnitTestBot`}</strong>{` and choose to `}<strong parentName=\"p\">{`Force mocking static methods`}</strong>{`.`}</p>\n <p>{`When enabled, it overrides all the other mocking settings.`}</p>\n <p>{`It will mock the methods inside the `}<strong parentName=\"p\">{`Classes to be forcedly mocked`}</strong>{` even if the Mockito is not installed.`}</p>\n <p>{`Keep this setting enabled until you are a contributor and want to experiment with UnitTestBot code.`}</p>\n <hr></hr>\n <h4 {...{\n \"id\": \"classes-to-be-forcedly-mocked\"\n }}>{`Classes to be forcedly mocked`}</h4>\n <p>{`If you chose to `}<strong parentName=\"p\">{`Force mocking static methods`}</strong>{`, you'll see four classes among `}<strong parentName=\"p\">{`Classes to be forcedly mocked`}</strong>{`, which are always here:`}</p>\n <p><inlineCode parentName=\"p\">{`java.util.Random`}</inlineCode>{`\n`}<inlineCode parentName=\"p\">{`org.slf4j.Logger`}</inlineCode>{`\n`}<inlineCode parentName=\"p\">{`org.slf4j.LoggerFactory`}</inlineCode>{`\n`}<inlineCode parentName=\"p\">{`org.utbot.api.mock.UtMock`}</inlineCode></p>\n <p>{`They must be mocked for correct test generation.`}</p>\n <p>{`You can add to this list. What should be forcedly mocked?`}</p>\n <p>{`Even if you choose to mock nothing or mock the package environment, please make sure to forcedly mock `}<em parentName=\"p\">{`random number generators`}</em>{`, `}<em parentName=\"p\">{`I/O operation`}</em>{`s and `}<em parentName=\"p\">{`loggers`}</em>{` to get valid test results.`}</p>\n <hr></hr>\n <ul>\n <li parentName=\"ul\">{`Do you need to execute a single test method multiple times with different parameters?`}</li>\n </ul>\n <h3 {...{\n \"id\": \"parameterized-tests\"\n }}>{`Parameterized tests`}</h3>\n <p>{`You can enable Parameterized tests in the `}<strong parentName=\"p\">{`Generate Tests with UnitTestBot`}</strong>{` window.`}</p>\n <p>{`In UnitTestBot parameterized tests are available only for JUnit 5 and TestNG chosen as the testing framework. UnitTestBot does not support parameterization for JUnit 4.`}</p>\n <p>{`If this setting is enabled, you cannot choose `}<strong parentName=\"p\">{`Mocking strategy`}</strong>{`. `}<strong parentName=\"p\">{`Do not mock`}</strong>{` will be set as default.`}</p>\n <hr></hr>\n <ul>\n <li parentName=\"ul\">{`Would you like to collect and run tests using JUnit 4, JUnit 5 or TestNG?`}</li>\n </ul>\n <h3 {...{\n \"id\": \"testing-framework\"\n }}>{`Testing framework`}</h3>\n <p>{`In the `}<strong parentName=\"p\">{`Generate Tests with UnitTestBot`}</strong>{` window choose the necessary `}<strong parentName=\"p\">{`Testing framework`}</strong>{`: `}<strong parentName=\"p\">{`JUnit 4`}</strong>{`, `}<strong parentName=\"p\">{`JUnit 5`}</strong>{` or `}<strong parentName=\"p\">{`TestNG`}</strong>{`.`}</p>\n <p>{`If you do not have some of them on your computer, UnitTestBot will install them for you.`}</p>\n <p><em parentName=\"p\">{`Note:`}</em>{` if you choose `}<strong parentName=\"p\">{`JUnit 4,`}</strong>{` you won't be able to activate `}<strong parentName=\"p\">{`Parameterized tests`}</strong>{`.`}</p>\n <hr></hr>\n <ul>\n <li parentName=\"ul\">{`Do you need to generate test methods in Kotlin for the source code written in Java or vice versa?`}</li>\n </ul>\n <h3 {...{\n \"id\": \"generated-test-language\"\n }}>{`Generated test language`}</h3>\n <p>{`By default, UnitTestBot detects your source code language and generates test methods accordingly.`}</p>\n <p>{`In `}<strong parentName=\"p\">{`File`}</strong>{` > `}<strong parentName=\"p\">{`Settings...`}</strong>{` > `}<strong parentName=\"p\">{`Tools`}</strong>{` > `}<strong parentName=\"p\">{`UnitTestBot`}</strong>{` you can choose `}<strong parentName=\"p\">{`Generated test language`}</strong>{` to generate test methods in Java or Kotlin regardless of your source code language.`}</p>\n <p>{`Generating tests in Kotlin is an experimental feature for now.`}</p>\n <hr></hr>\n <ul>\n <li parentName=\"ul\">{`Choose a folder to store your test code.`}</li>\n </ul>\n <h3 {...{\n \"id\": \"test-sources-root\"\n }}>{`Test sources root`}</h3>\n <p>{`For your first test generation with UnitTestBot choose the Test sources root manually in the `}<strong parentName=\"p\">{`Generate Tests with UnitTestBot`}</strong>{` window. UnitTestBot will remember your choice for future generations.`}</p>\n <p>{`If you `}<em parentName=\"p\">{`re-generate`}</em>{` the test for a given class or method, it will `}<em parentName=\"p\">{`erase the previously generated test`}</em>{` for this unit. To prevent this, rename or move the tests you want to keep.`}</p>\n <p>{`If the `}<strong parentName=\"p\">{`Test sources root`}</strong>{` directory `}<em parentName=\"p\">{`already contains hand-written tests`}</em>{` or tests created with IntelliJ IDEA `}<a parentName=\"p\" {...{\n \"href\": \"https://www.jetbrains.com/help/idea/create-tests.html\"\n }}>{`Create Test`}</a>{` feature, make sure to rename or move these tests. UnitTestBot will `}<em parentName=\"p\">{`overwrite`}</em>{` them, if they have the same names as the generated ones.`}</p>\n <p>{`If your project is built with Maven or Gradle, you will be able to choose only the pre-defined `}<strong parentName=\"p\">{`Test sources root`}</strong>{` options from the drop-down list due to a strict project directory layout. If necessary, please `}<a parentName=\"p\" {...{\n \"href\": \"https://www.jetbrains.com/help/idea/testing.html#add-test-root\"\n }}>{`define custom `}<strong parentName=\"a\">{`Test sources root`}</strong>{` via Gradle or Maven`}</a>{` by modifying the build file. If you use IntelliJ IDEA native build system you can mark any directory as `}<a parentName=\"p\" {...{\n \"href\": \"https://www.jetbrains.com/help/idea/testing.html#add-test-root\"\n }}>{`Test Sources Root`}</a>{`.`}</p>\n <hr></hr>\n <ul>\n <li parentName=\"ul\">{`Choose methods, classes or packages you want to cover with tests.`}</li>\n </ul>\n <h3 {...{\n \"id\": \"generate-tests-for\"\n }}>{`Generate tests for`}</h3>\n <p>{`You can choose the scope for test generation both in the Project tool window or in the Editor.`}</p>\n <ul>\n <li parentName=\"ul\">{`If you need to `}<em parentName=\"li\">{`generate tests for a package or a set of classes`}</em>{`, you can choose them all at once in the Project tool window.`}</li>\n <li parentName=\"ul\">{`If you want to `}<em parentName=\"li\">{`specify methods`}</em>{` to be covered with tests inside the given class, you can choose the class in the\nProject tool window or, alternatively, place the caret at the required class or method right in the Editor.`}<br></br>{`\nThen in the `}<strong parentName=\"li\">{`Generate Tests with UnitTestBot`}</strong>{` window tick the classes or methods you'd like to cover with tests.`}</li>\n </ul>\n <hr></hr>\n <h2 {...{\n \"id\": \"experiment-with-test-generation-to-reach-higher-coverage\"\n }}>{`Experiment with test generation to reach higher coverage`}</h2>\n <p>{`There are ways to configure the inner process of test generation. They are mostly intended for contributors' use, but sometimes they may be helpful for common usage. Try them if you are not satisfied with test coverage. Please make sure you've `}<em parentName=\"p\">{`set everything back to defaults`}</em>{` after finishing your experiments! Otherwise, you may have poor results during the next standard test generation.`}</p>\n <p>{`Before configuring these settings, get to know the shortest UnitTestBot overview ever:`}</p>\n <p><em parentName=\"p\">{`UnitTestBot has a `}<a parentName=\"em\" {...{\n \"href\": \"https://en.wikipedia.org/wiki/Symbolic_execution\"\n }}>{`dynamic symbolic execution`}</a>{` engine in its core, complemented with a smart `}<a parentName=\"em\" {...{\n \"href\": \"https://en.wikipedia.org/wiki/Fuzzing\"\n }}>{`fuzzing`}</a>{` technique. Fuzzer tries to \"guess\" values, which allow UnitTestBot to enter as much branches as possible. Dynamic symbolic engine in its turn tries to \"deduce\" the same. UnitTestBot starts its work with a little bit of fuzzing, quickly generating inputs to cover some branches. Then the dynamic symbolic execution engine systematically explores the program's execution paths. It simultaneously executes the program on both the `}<a parentName=\"em\" {...{\n \"href\": \"https://www.youtube.com/watch?v=QrtGOrSrVPQ&t=1008s\"\n }}>{`concrete and the symbolic values`}</a>{`. These two ways of execution guide each other, trying to reach all the possible branches.`}</em></p>\n <hr></hr>\n <h3 {...{\n \"id\": \"hanging-test-timeout-milliseconds-per-method\"\n }}>{`Hanging test timeout (milliseconds per method)`}</h3>\n <p>{`The symbolic engine generates parameters for the concrete execution — executing source code with concrete values. During concrete execution, if the engine enters an infinite loop or meet some other code conditions which take too much time to execute, the test being generated \"hangs\". It also means that the resulting test will hang when running and invoking the time-taking method.`}</p>\n <p>{`Hanging test timeout is the limitation for the concrete execution process. Set this timeout to define which test is\n\"hanging\". Increase it to test the time-consuming method or decrease if the execution speed is critical for you.`}</p>\n <p>{`Go to `}<strong parentName=\"p\">{`File`}</strong>{` > `}<strong parentName=\"p\">{`Settings...`}</strong>{` > `}<strong parentName=\"p\">{`Tools`}</strong>{` > `}<strong parentName=\"p\">{`UnitTestBot`}</strong>{` and set timeout in milliseconds — at 50 milliseconds intervals.`}</p>\n <hr></hr>\n <h3 {...{\n \"id\": \"test-generation-timeout-seconds-per-class\"\n }}>{`Test generation timeout (seconds per class)`}</h3>\n <p>{`In the `}<strong parentName=\"p\">{`Generate Tests with UnitTestBot`}</strong>{` window you can set the timeout for `}<em parentName=\"p\">{`both the fuzzing process and the symbolic engine`}</em>{` to generate tests for a given class.`}</p>\n <hr></hr>\n <h3 {...{\n \"id\": \"test-generation-method\"\n }}>{`Test generation method`}</h3>\n <p>{`UnitTestBot starts its work with `}<strong parentName=\"p\">{`Fuzzing`}</strong>{`, switching to `}<strong parentName=\"p\">{`Symbolic execution`}</strong>{` later.`}</p>\n <p>{`Go to `}<strong parentName=\"p\">{`File`}</strong>{` > `}<strong parentName=\"p\">{`Settings...`}</strong>{` > `}<strong parentName=\"p\">{`Tools`}</strong>{` > `}<strong parentName=\"p\">{`UnitTestBot`}</strong>{` and choose the proportion of time allocated for each of these two methods within `}<strong parentName=\"p\">{`Test generation timeout`}</strong>{` per class.`}</p>\n <p>{`The closer the slider is to each method (`}<strong parentName=\"p\">{`Fuzzing`}</strong>{` or `}<strong parentName=\"p\">{`Symbolic execution`}</strong>{`) the more time you allocate for it.`}</p>\n <hr></hr>\n <h2 {...{\n \"id\": \"configure-test-behavior-and-appearance\"\n }}>{`Configure test behavior and appearance`}</h2>\n <p>{`You can adjust the way the generated tests behave and look like.`}</p>\n <hr></hr>\n <h3 {...{\n \"id\": \"tests-with-exceptions\"\n }}>{`Tests with exceptions`}</h3>\n <p>{`Go to `}<strong parentName=\"p\">{`File`}</strong>{` > `}<strong parentName=\"p\">{`Settings...`}</strong>{` > `}<strong parentName=\"p\">{`Tools`}</strong>{` > `}<strong parentName=\"p\">{`UnitTestBot`}</strong>{` and choose the behavior for the tests with exceptions:`}</p>\n <ul>\n <li parentName=\"ul\"><strong parentName=\"li\">{`Fail`}</strong>{` — tests that produce Runtime exceptions should fail.`}</li>\n <li parentName=\"ul\"><strong parentName=\"li\">{`Pass`}</strong>{` — tests that produce Runtime exceptions should pass (by inserting throwable assertion).`}</li>\n </ul>\n <hr></hr>\n <h3 {...{\n \"id\": \"overflow-detection\"\n }}>{`Overflow detection`}</h3>\n <p>{`Go to `}<strong parentName=\"p\">{`File`}</strong>{` > `}<strong parentName=\"p\">{`Settings...`}</strong>{` > `}<strong parentName=\"p\">{`Tools`}</strong>{` > `}<strong parentName=\"p\">{`UnitTestBot`}</strong>{` and choose the approach to overflows: whether UnitTestBot should `}<strong parentName=\"p\">{`Ignore overflows`}</strong>{` or `}<strong parentName=\"p\">{`Treat overflows`}</strong>{` as errors.`}</p>\n <hr></hr>\n <h3 {...{\n \"id\": \"javadoc-comment-style\"\n }}>{`Javadoc comment style`}</h3>\n <p>{`Go to `}<strong parentName=\"p\">{`File`}</strong>{` > `}<strong parentName=\"p\">{`Settings...`}</strong>{` > `}<strong parentName=\"p\">{`Tools`}</strong>{` > `}<strong parentName=\"p\">{`UnitTestBot`}</strong>{` and choose the style for test descriptions:`}</p>\n <ul>\n <li parentName=\"ul\"><strong parentName=\"li\">{`Structured via custom Javadoc tags`}</strong>{` — UnitTestBot uses custom Javadoc tags to concisely describe test execution path.`}</li>\n <li parentName=\"ul\"><strong parentName=\"li\">{`Plain text`}</strong>{` — UnitTestBot briefly describes test execution path in plain text.`}</li>\n </ul>\n <p>{`For more information and illustrations see Read test descriptions.`}</p>\n <p><em parentName=\"p\">{`Note:`}</em>{` currently, the feature works only for symbolic execution engine, so make sure you've allocated all the time to `}<strong parentName=\"p\">{`Symbolic execution`}</strong>{` in `}<strong parentName=\"p\">{`Test generation method`}</strong>{`.`}</p>\n\n </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","parentName","isMDXComponent"],"sourceRoot":""}