UnitTestBot is the tool for automated unit test generation available as an IntelliJ IDEA plugin, or a command-line interface.
Now UnitTestBot provides fuzzing-based support for JavaScript.
- IntelliJ IDEA Ultimate — for compatibility, see UnitTestBot on JetBrains Marketplace.
- UnitTestBot plugin: please refer to UnitTestBot user guide.
- Node.js 10.0.0 or later (we recommend that you add Node.js to environment variables)
Note: when npm cannot install requirements, try troubleshooting.
- If the system prohibits installation: run cmd via
sudo
or with administrator access, runnpm install -g <missing requirement>
. - If Node.js is missing, or npm is not installed: install Node.js with default configuration from the official website.
-
In your IntelliJ IDEA, go to File > Settings > Tools, choose UnitTestBot and enable Experimental languages support.
(!) NOTE: be sure to enable this option for each project.
-
Go to File > Settings > Languages & Frameworks, choose Node.js and check if the path to Node.js executable file is specified.
-
In a JavaScript file, press Alt+Shift+U to open the generation dialog.
JAR file can be built in GitHub Actions with the publish-plugin-and-cli-from-branch
script.
- Node.js 10.0.0 or later
- Java 11 or later
- nyc 15.1.0 or later:
> npm install -g nyc
- Mocha 10.0.0 or later:
> npm install -g mocha
Note: for each new project, npm needs internet connection to install the required packages.
java -jar utbot-cli.jar generate_js --source="dir/file_with_sources.js" --output="dir/generated_tests.js"
This will generate tests for top-level functions from file_with_sources.js
.
-
-s, --source <path>
(required) Source code file for test generation.
-
-c, --class <classname>
Specifies the class to generate tests for. If not specified, tests for top-level functions or a single class are generated.
-
-o, --output <dir/filename>
File for generated tests.
-
-p, --print-test
Specifies whether a test should be printed out to
StdOut
(default = false). -
-t, --timeout <seconds>
Timeout for a single test case to generate: in seconds (default = 15).
-
--coverage-mode <BASIC/FAST>
Specifies the coverage mode for test generation (used for coverage-based optimization). For now, the fast mode cannot deal with exceeding timeouts, but works faster (default = FAST). Do not use the fast mode if you guess there might be infinite loops in your code.
-
--path-to-node <path>
Sets a path to Node.js executable (default = "node").
-
--path-to-nyc <path>
Sets a path to nyc executable (default = "nyc").
-
--path-to-npm <path>
Sets a path to npm executable (default = "npm").
java -jar utbot-cli.jar run_js --fileOrDir="generated_tests.js"
This will run generated tests from a file or directory.
-
-f, --fileOrDir
(required) File or directory with tests.
-
-o, --output
Specifies the output TXT file for a test framework result (if empty, prints the result to
StdOut
). -
-t, --test-framework <name>
Test framework to use for test running (default = "Mocha").
java -jar utbot-cli.jar coverage_js --source=dir/generated_tests.js
This will generate a coverage report for generated tests and print it to StdOut
.
-
-s, --source <file>
(required) File with tests to generate a report for.
-
-o, --output
Specifies the output JSON file for a coverage report (if empty, prints the report to
StdOut
). -
--path-to-nyc <path>
Sets a path to nyc executable (default = "nyc").