Vzdálené testování (experimentální verze Preview)
Vzdálené testování umožňuje vývojářům připojit Visual Studio 2022 ke vzdáleným prostředím pro spouštění a ladění testů. Tato funkce je užitečná pro vývojáře napříč platformami, kteří nasazují kód do více různých cílových prostředí, jako jsou různé operační systémy Windows nebo Linux. Vývojář například obvykle odešle změny do kanálu CI, aby získal zpětnou vazbu z testu spuštěného v Linuxu. Pomocí funkce vzdáleného testování můžete spouštět linuxové testy přímo ze sady Visual Studio připojením Průzkumníka testů ke vzdálenému prostředí.
Požadavky
Pro experimentální verzi vzdáleného testování platí následující požadavky:
Musíte používat Visual Studio 2022 Update 17.0 Preview 3 nebo novější.
V současné době tato funkce podporuje pouze testy rozhraní .NET a .NET Framework.
- Pokud máte zájem o podporu vzdáleného testování pro jiné jazyky, můžete podat návrh nebo znovu vytvořit existující návrh. Podpora vzdáleného testování jazyka C++.
V současné době tato funkce podporuje image Windows, Ubuntu a Debian ve vzdáleném prostředí. V rozhraní .NET Framework jsou podporována pouze vzdálená prostředí Windows.
V současné době je většina zřizování prostředí ponechána specifikaci uživatele.
Uživatel musí v cílovém prostředí nainstalovat potřebné závislosti. Pokud například vaše testy cílí na .NET 6.0, musíte se ujistit, že kontejner má nainstalované rozhraní .NET 6.0 prostřednictvím souboru Dockerfile. Může se zobrazit výzva k instalaci .NET Core ve vzdáleném prostředí, které je potřeba ke vzdálenému spuštění a zjišťování testů.
Pomocí podokna Výstupní>testy naplánujte monitorování stavu připojení ke vzdálenému prostředí.
Pokud se například kontejner zastaví, zobrazí se v podokně Výstupní>testy zpráva. Tato funkce nemusí rozpoznat všechny scénáře, takže naplánujte kontrolu výstupu, pokud vypadá, že připojení není ztraceno. Konkrétně pokud není podokno Výstup nastaveno na Test, nemusí se zpráva okamžitě zobrazit. Pokud dojde ke ztrátě připojení, můžete pomocí rozevíracího seznamu prostředí v Průzkumníku testů nastavit připojení zpět do místního prostředí a potom znovu připojit vzdálené prostředí.
Nastavení vzdáleného testovacího prostředí
Prostředí se zadají pomocí souboru testenvironments.json v kořenovém adresáři vašeho řešení. Struktura souborů JSON implementuje následující schéma:
{
"version": "1", // value must be 1
"environments": [
{ "name": "<unique name>", ... },
...
]
}
Vlastnosti prostředí v testenvironments.json
Soubor testenvironments.json má následující vlastnosti prostředí.
Vlastnost | Type | Description |
---|---|---|
name |
string | Uživatelsky přívětivý název prostředí, který se zobrazí v Průzkumníku testů. Musí být jedinečný v rámci souboru testEnvironments.json . |
localRoot |
string | [Volitelné] Cesta na místním počítači (absolutní nebo relativní vzhledem k adresáři řešení), která se promítá do vzdáleného prostředí. Pokud není zadáno, výchozí hodnotou je kořen úložiště v kontextu úložiště Git (v sadě Visual Studio 2022 verze 17.1 a novější). Výchozí hodnotou mimo úložiště Git je adresář řešení. |
type |
enum | Určuje typ vzdáleného prostředí. Hodnota může být buď docker , wsl nebo ssh . |
dockerImage |
string | Název image Dockeru, která se má načíst v prostředí Dockeru Tato hodnota se vyžaduje, pokud je docker prostředí type . |
dockerFile |
string | Cesta k souboru Dockeru vzhledem k adresáři řešení pro sestavení image a načtení v prostředí Dockeru Tato hodnota se vyžaduje, pokud je docker prostředí type . |
wslDistribution |
string | Název místní distribuce WSL, ve které se má spustit testovací prostředí. Tato hodnota se vyžaduje, pokud je wsl prostředí type . |
remoteUri |
string | Identifikátor URI, který určuje připojení ke vzdálenému počítači. Například ssh://user@hostname:22 . Tato hodnota se vyžaduje, pokud je ssh prostředí type . |
Poznámka:
Je nutné zadat buď vlastnost dockerImage
, dockerFile
ale nikoli obě vlastnosti.
Připojení místního kontejneru
Pokud se chcete připojit ke kontejneru spuštěném místně, musíte mít na místním počítači Docker Desktop . Volitelně můžete povolit integraci WSL2 pro lepší výkon.
V souboru Dockerfile je možné prostředí zadat v souboru testEnvironments.json v kořenovém adresáři vašeho řešení. Používá následující vlastnosti:
{
"name": "<name>",
"type": "docker",
"dockerImage": "<docker image tag>",
}
Následující příklad ukazuje soubor testenvironments.json pro místní image kontejneru s názvem <mcr.microsoft.com/dotnet/sdk>
.
{
"version": "1",
"environments": [
{
"name": "linux dotnet-sdk-5.0",
"type": "docker",
"dockerImage": "mcr.microsoft.com/dotnet/sdk"
}
]
}
Následující příklad ukazuje soubor Dockerfile pro spouštění testů, které cílí na .NET 5.0. Druhý řádek zajistí, že se ladicí program může připojit a spustit v kontejneru.
FROM mcr.microsoft.com/dotnet/sdk:5.0
RUN wget https://aka.ms/getvsdbgsh && \
sh getvsdbgsh -v latest -l /vsdbg
Kontejner musí mít na místním počítači vytvořenou image. Kontejner můžete vytvořit pomocí příkazu docker build -t <docker image name> -f <path to Dockerfile> .
. Nezapomeňte zahrnout tečku .
na konci příkazu.
Následující příklad ukazuje použití dockerFile
vlastnosti místo dockerImage
vlastnosti.
{
"version": "1",
"environments": [
{
"name": "GitServiceUnix",
"type": "docker",
"dockerFile": "Dockerfile.test"
}
]
}
Místní připojení WSL2
Pokud chcete vzdáleně spouštět testy na WSL2, musíte povolit integraci WSL2 na místním počítači.
Prostředí lze zadat v souboru testEnvironments.json v kořenovém adresáři vašeho řešení pomocí následujícího schématu. <Ubuntu>
Nahraďte hodnotu wslDistribution
vlastnosti instalací WSL2 Distribution.
{
"version": "1",
"environments": [
{
"name": "WSL-Ubuntu",
"type": "wsl",
"wslDistribution": "Ubuntu"
}
]
}
Připojení SSH
Připojení SSH můžete přidávat nebo odebírat v > nástrojích možnosti > pro různé platformy > Správce připojení. Vyberte Přidat a zadejte název hostitele, port a všechny přihlašovací údaje, které potřebujete.
Prostředí lze zadat v souboru testEnvironments.json v kořenovém adresáři vašeho řešení pomocí následujícího schématu. <ssh://user@hostname:22>
Nahraďte hodnotu remoteUri
vlastnosti hodnotou SSH.
{
"version": "1",
"environments": [
{
"name": "ssh-remote",
"type": "ssh",
"remoteUri": "ssh://user@hostname:22"
}
]
}
Požadavky pro vzdálené prostředí Windows
Projděte si následující požadavky pro vzdálené prostředí Windows.
Ujistěte se, že je na vzdáleném počítači povolený systém souborů Windows Projected. Z okna PowerShellu pro správce můžete spustit následující kód, abyste ho povolili:
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
Podle potřeby restartujte prostředí.
Ujistěte se, že je nastavený protokol SSH. Postup najdete v tématu Instalace OpenSSH. Spusťte server SSH spuštěním následujícího příkazu z okna PowerShellu pro správce:
Start-Service sshd
Ujistěte se, že je nainstalovaný příslušný modul runtime .NET vyžadovaný vašimi testy. .NET pro Windows si můžete stáhnout.
Příprava prostředí pro ladění testů:
Nainstalujte skladovou položku Nástrojů Remote Tools do vzdáleného prostředí.
Spusťte vzdálený ladicí program jako správce a ujistěte se, že má uživatel sady Visual Studio oprávnění k připojení.
Požadavky pro vzdálené linuxové prostředí
Projděte si následující požadavky pro vzdálené linuxové prostředí.
Ujistěte se, že je ssh nakonfigurovaný a spuštěný.
Nainstalujte
fuse3
pomocí správce balíčků.Ujistěte se, že je ve vzdáleném linuxovém prostředí nainstalovaný příslušný modul runtime .NET vyžadovaný vašimi testy.
Použití Průzkumníka testů ke spuštění a ladění vzdálených testů
Tady je postup, jak pomocí Průzkumníka testů spustit a ladit vzdálené testy prostředí.
Aktivní prostředí je vybráno prostřednictvím rozevíracího seznamu na panelu nástrojů Průzkumníka testů. V současné době může být aktivní jenom jedno testovací prostředí.
Po výběru prostředí se testy zjistí a spustí v novém prostředí.
Testy teď můžete spouštět uvnitř vzdáleného prostředí a ladit testy v prostředích.
Průzkumník testů vás může vyzvat k instalaci některých chybějících součástí prostředí a pokusu o instalaci chybějících závislostí. Většina zřizování vzdáleného prostředí je však až do specifikace uživatele.