Dieses Plugin stellt einen PHPUnit-Adapter für das Neotest-Framework bereit.
Installieren Sie mit dem Paketmanager Ihrer Wahl:
Faul
{
" nvim-neotest/neotest " ,
lazy = true ,
dependencies = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " )
},
}
end
}
Packer
use ({
" nvim-neotest/neotest " ,
requires = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " ),
}
})
end
})
Notiz
Sie müssen die setup
-Funktion nur dann aufrufen, wenn Sie eine der Standardeinstellungen ändern möchten.
adapters = {
require ( " neotest-phpunit " )({
phpunit_cmd = function ()
return " vendor/bin/phpunit " -- for `dap` strategy then it must return string (table values will cause validation error)
end ,
root_files = { " composer.json " , " phpunit.xml " , " .gitignore " },
filter_dirs = { " .git " , " node_modules " },
env = {}, -- for example {XDEBUG_CONFIG = 'idekey=neotest'}
dap = nil , -- to configure `dap` strategy put single element from `dap.configurations.php`
}),
}
Der zum Ausführen von Tests verwendete Befehl kann über die Option phpunit_cmd
geändert werden:
require ( " neotest-phpunit " )({
phpunit_cmd = function ()
return " vendor/bin/phpunit "
end
})
Damit Neotest-Adapter funktionieren, müssen sie ein Projektstammverzeichnis definieren, in dem der Prozess der Testerkennung stattfinden kann. Standardmäßig sucht der Adapter nach einer composer.json
, phpunit.xml
oder .gitignore
Datei. Diese können geändert werden mit:
require ( " neotest-phpunit " )({
root_files = { " README.md " }
})
Sie können root_files
sogar mit einer Funktion festlegen, die eine Tabelle zurückgibt:
require ( " neotest-phpunit " )({
root_files = function () return { " README.md " } end
})
Wenn es Projekte gibt, die nicht entdeckt werden sollen, können Sie stattdessen root_ignore_files
so einstellen, dass alle passenden Projekte ignoriert werden.
Wenn Ihr Projekt beispielsweise Pest und den entsprechenden Neotest-Adapter verwendet, müssen Sie Folgendes festlegen:
require ( " neotest-phpunit " )({
root_ignore_files = { " tests/Pest.php " }
})
Standardmäßig durchsucht der Adapter Testdateien in allen Verzeichnissen im Stammverzeichnis mit Ausnahme von node_modules
und .git
. Sie können dies ändern mit:
require ( " neotest-phpunit " )({
filter_dirs = { " vendor " }
})
Sie können filter_dirs
sogar mit einer Funktion festlegen, die eine Tabelle zurückgibt:
require ( " neotest-phpunit " )({
filter_dirs = function () return { " vendor " } end
})
Das Plugin kann auch zum Debuggen über eine Dap-Strategie verwendet werden.
Installieren und konfigurieren Sie zunächst nvim-dap mit vscode-php-debug. Stellen Sie dann die folgende dap-Konfiguration ein:
dap . configurations . php = {
{
log = true ,
type = " php " ,
request = " launch " ,
name = " Listen for XDebug " ,
port = 9003 ,
stopOnEntry = false ,
xdebugSettings = {
max_children = 512 ,
max_data = 1024 ,
max_depth = 4 ,
},
breakpoints = {
exception = {
Notice = false ,
Warning = false ,
Error = false ,
Exception = false ,
[ " * " ] = false ,
},
},
}
}
Fügen Sie dann in der Konfiguration des Plugins Folgendes hinzu:
require ( " neotest-phpunit " )({
env = {
XDEBUG_CONFIG = " idekey=neotest " ,
},
dap = dap . configurations . php [ 1 ],
})
Notiz
Wenn Sie einen Test mit der dap
-Strategie aus dem Zusammenfassungsfenster (standardmäßig durch d
) ausführen und feststellen, dass der Fensterinhalt durch Debugger-Inhalt ersetzt wurde, sollten Sie die Einstellung dap.defaults.fallback.switchbuf = "useopen"
oder switchbuf
auf Neovim-Ebene in Betracht ziehen
Um einen einzelnen Test zu testen, bewegen Sie den Mauszeiger über den Test und führen Sie lua require("neotest").run.run()
aus.
Um eine Datei zu testen, führen Sie lua require("neotest").run.run(vim.fn.expand("%"))
aus.
Um ein Verzeichnis zu testen, führen Sie lua require("neotest").run.run("path/to/directory")
aus.
Um die vollständige Testsuite zu testen, führen Sie lua require("neotest").run.run({ suite = true })
aus.
Dieses Projekt wird von der Neovim PHP-Community gepflegt. Bitte senden Sie eine PR, wenn Sie daran interessiert sind, neue Funktionen hinzuzufügen oder Fehler zu beheben. Wenn Sie einen Fehler einreichen, fügen Sie bitte einen Beispieltest bei, den wir testen können.
Führen Sie Folgendes aus, um die Tests für den Adapter auszulösen:
./scripts/test