Enhance your coding experience with seamless PHPUnit integration for Sublime Text.
- Run a test
- Run a test file
- Run the test suite
- Run the nearest test
- Run the last test
- Run tests via SSH
- Run tests via Docker
- Run tests via sidebar and context menus
- Run multiple tests (multiple cursor)
- Auto-run tests on save
- Jump to next and previous failures
- File and test switcher
- Toggle options
- Fully customizable
- Zero configuration required
- Support for:
- Artisan - Artisan is the command-line interface included with Laravel.
- Composer - Composer is a Dependency Manager for PHP.
- iTerm2 - iTerm2 brings the terminal into the modern age.
- Kitty - Kitty is a fast, feature-rich, cross-platform, GPU-based terminal.
- ParaTest - ParaTest adds parallel testing support in PHPUnit.
- Pest - Pest is a testing framework with a focus on simplicity.
- xterm - A terminal emulator for the X Window System.
- cmd - A command-line interpreter for Windows.
- PowerShell - A cross-platform command-line shell.
- Tmux - A terminal multiplexer.
Read Running PHPUnit Tests from Sublime Text for a quick introduction.
Table of Contents (click to expand)
Command | Description |
---|---|
PHPUnit: Test Nearest | Executes the test closest to the cursor. If the current file isn't a designated test file, it runs tests for the current file. |
PHPUnit: Test File | Runs tests for the currently open file. If it's not a test file, it runs tests for the current file. |
PHPUnit: Test Suite | Runs the test suite associated with the current file. |
PHPUnit: Test Last | Runs the most recently executed test. |
PHPUnit: Test Switch | In a test file, opens the file under test; otherwise, opens the corresponding test file. |
PHPUnit: Test Visit | Quickly accesses the last run test. |
PHPUnit: Test Results | Opens the test output panel (applies to "sublime" strategy). |
PHPUnit: Test Cancel | Halts any ongoing test executions. |
PHPUnit: Test Coverage | Views code coverage using your default browser. |
PHPUnit: Toggle... | Various toggle commands. |
Key | Description |
---|---|
F4 |
Jump to the next failure |
Shift+F4 |
Jump to the previous failure |
Command Palette → Preferences: Key Bindings
Linux / Win
{ "keys": ["ctrl+shift+a"], "command": "phpunit_test_suite" },
{ "keys": ["ctrl+shift+c"], "command": "phpunit_test_cancel" },
{ "keys": ["ctrl+shift+f"], "command": "phpunit_test_file" },
{ "keys": ["ctrl+shift+l"], "command": "phpunit_test_last" },
{ "keys": ["ctrl+shift+n"], "command": "phpunit_test_nearest" },
{ "keys": ["ctrl+shift+r"], "command": "phpunit_test_results" },
{ "keys": ["ctrl+shift+s"], "command": "phpunit_test_switch" },
{ "keys": ["ctrl+shift+v"], "command": "phpunit_test_visit" },
Mac
{ "keys": ["super+shift+a"], "command": "phpunit_test_suite" },
{ "keys": ["super+shift+c"], "command": "phpunit_test_cancel" },
{ "keys": ["super+shift+f"], "command": "phpunit_test_file" },
{ "keys": ["super+shift+l"], "command": "phpunit_test_last" },
{ "keys": ["super+shift+n"], "command": "phpunit_test_nearest" },
{ "keys": ["super+shift+r"], "command": "phpunit_test_results" },
{ "keys": ["super+shift+s"], "command": "phpunit_test_switch" },
{ "keys": ["super+shift+v"], "command": "phpunit_test_visit" },
You can run tests using different execution environments known as "strategies".
Strategy | Identifier | Description |
---|---|---|
Sublime (default) |
sublime |
Sends test commands to Sublime Text's exec output panel. |
iTerm2.app | iterm |
Sends test commands to iTerm2 >= 2.9 . |
Kitty | kitty |
Sends test commands to the Kitty terminal. |
xterm | xterm |
Sends test commands to the xterm terminal. |
cmd | cmd |
Sends test commands to the cmd.exe terminal. |
PowerShell | powershell |
Sends test commands to the PowerShell command shell. |
Tmux | tmux |
Sends test commands to the Tmux terminal multiplexer. |
Example: Use the Tmux strategy
Command Palette → Preferences: PHPUnit Settings
"phpunit.strategy": "tmux"
Command Palette → Preferences: PHPUnit Settings
Setting | Type | Default | Description |
---|---|---|---|
phpunit.executable |
string or list |
Auto-discovery | Path to the PHPUnit executable for running tests. Environment variables and user home directory ~ placeholder are expanded. The executable can be a string or a list of parameters. Example: vendor/bin/phpunit |
phpunit.options |
dict |
{} |
Command-line options to pass to PHPUnit. Example: {"no-coverage": true} |
phpunit.php_executable |
string |
Auto-discovery | Path to the PHP executable for running tests. Environment variables and user home directory ~ placeholder are expanded. Example: ~/.phpenv/versions/8.2/bin/php |
phpunit.save_all_on_run |
boolean |
true |
Automatically saves all unsaved buffers before running tests. |
phpunit.on_post_save |
list |
[] |
Auto commands to execute when views are saved. Example: ["phpunit_test_file"] |
phpunit.debug |
boolean |
false |
Prints debug information about the test runner. |
phpunit.prepend_cmd |
list |
[] |
Prepends custom commands to the test runner. |
phpunit.strategy |
string |
sublime |
The execution environment used for running tests. |
phpunit.font_size |
integer |
Editor default | Font size of PHPUnit's output. |
phpunit.composer |
boolean |
true |
Uses Composer-installed executables. |
phpunit.artisan |
boolean |
false |
Uses Artisan to run tests. |
phpunit.paratest |
boolean |
false |
Uses ParaTest to run tests. |
phpunit.pest |
boolean |
false |
Uses Pest to run tests. |
SSH Settings
Configure SSH settings for running tests remotely:
Setting | Type | Default | Description |
---|---|---|---|
phpunit.ssh |
boolean |
false |
Enable SSH for remote testing. |
phpunit.ssh_options |
dict |
{} |
Options for running tests via SSH. Example: {"-p": "22", "-tt": true} . |
phpunit.ssh_user |
string |
null |
User for running tests via SSH. Example: vagrant |
phpunit.ssh_host |
string |
null |
Host for running tests via SSH. Example: homestead.test |
phpunit.ssh_paths |
dict |
{} |
Path mapping for running tests via SSH. Keys: local paths, Values: corresponding remote paths. Environment variables and user home directory ~ placeholder are expanded. Example: {"~/code/project1": "~/project1"} |
Docker Settings
Configure Docker settings for running tests within containers:
Setting | Type | Default | Description |
---|---|---|---|
phpunit.docker |
boolean |
false |
Enable Docker for testing. |
phpunit.docker_command |
list |
[] |
Command to use when running tests via Docker. Example: ["docker", "exec", "-it", "my-container"] |
phpunit.docker_paths |
dict |
{} |
Path mapping for running tests via Docker. Keys: local paths, Values: corresponding remote paths. Environment variables and user home directory ~ placeholder are expanded. Example: {"~/code/project1": "~/project1"} |
Tmux Settings 🆕
Configure Tmux settings for running tests in a tmux pane:
Setting | Type | Default | Description |
---|---|---|---|
phpunit.tmux_clear |
bool |
true |
Clear the terminal screen before running tests. |
phpunit.tmux_clear_scrollback |
bool |
true |
Clear the terminal's scrollback buffer or do not attempt to clear it using the extended "E3" capability. |
phpunit.tmux_target |
string |
:. |
Specify the session, window, and pane which should be used to run tests. Format: {session}:{window}.{pane} The default means the current pane. For example, :{start}.{top} would mean the current session, lowest-numbered window, top pane. See Tmux documentation for target usage. |
- Type:
dict
- Default:
{}
Default command-line options to pass to PHPUnit. If you want some CLI options to stick around, you can configure them in your settings.
"phpunit.options": {
"no-coverage": true,
"no-progress": true,
"colors=never": true,
"order-by=": "defects",
"coverage-html": "build/coverage",
"d": ["display_errors=1", "xdebug.scream=0"],
}
The above options will be passed to PHPUnit as CLI options:
-d "display_errors=1" \
-d "xdebug.scream=0" \
--no-coverage \
--no-progress \
--colors=never \
--order-by=defects \
--coverage-html build/coverage
Ignore code coverage reporting configured in the XML configuration file
This can help keep your tests fast. You can toggle no-coverage from the command palette when you need it.
"phpunit.options": {
"no-coverage": true,
}
Stop after first error, failure, warning, or risky test
"phpunit.options": {
"stop-on-defect": true
}
Disable progress and output
This is useful if you are migrating from PHPUnit to Pest and want to hide superfluous output.
"phpunit.options": {
"no-progress": true,
"no-output": true,
}
- Type:
string | list
- Default: Auto-discovery
The PHPUnit executable to use when running tests.
"phpunit.executable": "vendor/bin/phpunit",
Environment variables and user home directory ~
placeholders are expanded.
"phpunit.executable": "~/path/to/phpunit",
As a list of arguments:
"phpunit.executable": ["artisan", "test"]
- Type:
string
- Default: Auto-discovery
The PHP executable to use when running tests.
Environment variables and user home directory ~
placeholders are expanded.
"phpunit.php_executable": "~/.phpenv/versions/8.2/bin/php"
- Type:
boolean
- Default:
true
Automatically save all unsaved views before running tests.
- Type:
list
- Default:
[]
Auto commands to execute when views are saved.
Currently only supports running the test file command.
"phpunit.on_post_save": [
"phpunit_test_file"
]
- Type:
boolean
- Default:
false
Enable debug logging when running tests.
- Type:
list
- Default:
[]
Prepends custom commands to the test runner.
- Type:
string
- Default:
sublime
The execution environment used for running tests.
- Type:
integer
- Default: Editor default
Font size of PHPUnit's output.
- Type:
boolean
- Default:
true
Discover and use Composer executables.
- Type:
boolean
- Default:
false
Discover and use Artisan to run tests.
- Type:
boolean
- Default:
false
Discover and use ParaTest to run tests.
- Type:
boolean
- Default:
false
Discover and use Pest to run tests.
- Type:
boolean
- Default:
false
Enable SSH for remote testing.
Run tests via SSH using Laravel Homestead
"phpunit.ssh": true,
"phpunit.ssh_options": {
"-p": "22",
"-tt": true
},
"phpunit.ssh_user": "vagrant",
"phpunit.ssh_host": "homestead.test",
"phpunit.ssh_paths": {
"~/code/project1": "~/project1",
"/home/code/project2": "/home/vagrant/project2",
}
- Type:
dict
- Default:
{}
Options for running tests via SSH.
"phpunit.ssh_options": {
"-p": "22",
"-tt": true
}
- Type:
string
- Default:
null
User for running tests via SSH.
"phpunit.ssh_user": "vagrant"
- Type:
string
- Default:
null
Host for running tests via SSH.
"phpunit.ssh_host": "homestead.test"
- Type:
dict
- Default:
{}
Path mapping for SSH.
Environment variables and user home directory ~
placeholders are expanded.
"phpunit.ssh_paths": {
"~/code/project1": "~/project1"
}
- Type:
boolean
- Default:
false
Enable Docker for testing.
Run tests via Docker
"phpunit.docker": true,
"phpunit.docker_command": ["docker", "exec", "-it", "my-container"],
"phpunit.docker_paths": {
"~/code/project1": "~/project1",
"/home/code/project2": "/home/vagrant/project2",
}
- Type:
list
- Default:
[]
Command to use when running tests via Docker.
"phpunit.docker_command": [
"docker",
"exec",
"-it",
"my-container"
]
- Type:
dict
- Default:
{}
Path mapping for Docker.
Environment variables and user home directory ~
placeholders are expanded.
"phpunit.docker_paths": {
"~/code/project1": "~/project1"
}
- Type:
bool
- Default:
true
Clear the terminal screen before running tests.
- Type:
bool
- Default:
true
Clear the terminal's scrollback buffer or do not attempt to clear it using the extended "E3" capability.
- Type:
string
- Default:
:.
(current pane)
Set the session, window, and pane, to be used to run tests. The format is {session}:{window}.{pane}
, see Tmux documentation for details.
Current session, lowest-numbered window, top pane.
:{start}.{top}
Use the no-coverage
option by default, and then use the Command Palette Toggle no-coverage command, to toggle code coverage on and off when you need it. This can make your tests run faster by default.
"phpunit.strategy": "tmux",
"phpunit.tmux_target": ":{start}.{top}",
"phpunit.options": {
"colors": true,
"no-coverage": true
}
You can automatically run a test file on save.
Command Palette → Preferences: PHPUnit Settings
"phpunit.on_post_save": [
"phpunit_test_file"
]
NeoVintageous is a Vim emulator for Sublime Text.
-
Open the Command Palette:
Command Palette → NeoVintageous: Open neovintageous file
. -
Add your preferred mappings.
Example
nnoremap <leader>t :TestNearest<CR> nnoremap <leader>T :TestFile<CR> nnoremap <leader>a :TestSuite<CR> nnoremap <leader>l :TestLast<CR> nnoremap <leader>g :TestVisit<CR>
-
To apply the changes, reload the neovintageousrc from the Command Palette:
Command Palette → NeoVintageous: Reload neovintageous file
.
Method 1: Using Package Control
- Open Sublime Text.
- Press
Ctrl+Shift+P
(Windows/Linux) orCmd+Shift+P
(macOS) to open the Command Palette. - Type "Package Control: Install Package" and press
Enter
. - In the input field, type "PHPUnitKit" and select it from the list of available packages.
Method 2: Manual Installation
- Visit the PHPUnitKit GitHub repository.
- Click on the "Code" button and select "Download ZIP."
- Extract the downloaded ZIP file.
- Open Sublime Text and go to
Preferences -> Browse Packages...
to open the Packages folder. - Copy the "PHPUnitKit" folder from the extracted ZIP and paste it into the Packages folder.
Method 3: Manual Git Repository Installation
- Open a terminal or command prompt.
- Navigate to the Sublime Text Packages directory:
- On Windows:
%APPDATA%\Sublime Text\Packages
- On macOS:
~/Library/Application Support/Sublime Text/Packages
- On Linux:
~/.config/sublime-text/Packages
- On Windows:
- Clone the plugin repository directly into the Packages directory using Git:
git clone https://github.com/gerardroche/sublime-phpunit.git PHPUnitKit
See CONTRIBUTING.md.
See CHANGELOG.md.
Based initially on, and inspired by the awesome work of maltize/sublime-text-2-ruby-tests, stuartherbert/sublime-phpunit, janko-m/vim-test, and many others.
Released under the GPL-3.0-or-later License.