遠端測試 (實驗性預覽)
遠端測試可讓開發人員將 Visual Studio 2022 連線到遠端環境,以便執行和偵錯測試。 此功能對於將程式碼部署到多個不同目標環境 (例如不同的 Windows 或 Linux 作業系統) 的跨平台開發人員相當有用。 例如,開發人員通常會將變更推送至 CI 管線,才能從 Linux 上執行的測試取得意見反應。 透過遠端測試功能,您可以將測試總管連線至遠端環境,直接從 Visual Studio 執行 Linux 測試。
需求
下列需求適用於遠端測試的實驗版本:
您必須執行 Visual Studio 2022 更新 17.0 預覽版 3 或更新版本。
目前,該功能僅支援 .NET 和 .NET Framework 測試。
- 如果您對其他語言的遠端測試支援感興趣,您可以提出建議,或附議現有的建議。 支援 C++ 遠端測試。
目前此功能支援遠端環境中的 Windows、Ubuntu 和 Debian 映像。 針對 .NET Framework,僅支援遠端 Windows 環境。
目前,大部分的環境佈建會留給使用者的規格。
使用者必須在目標環境中安裝必要的相依性。 例如,如果您的測試是以 .NET 6.0 為目標,您必須確定容器已透過 Dockerfile 安裝 .NET 6.0。 系統可能會提示您在遠端環境中安裝 .NET Core,這是從遠端執行和探勘測試所需的條件。
使用 [輸出]>[測試] 窗格,規劃監視遠端環境的連線狀態。
例如,如果容器停止,訊息會出現在 [輸出]>[測試] 窗格中。 該功能可能不會偵測到所有案例,因此請規劃檢查您的輸出是否看起來像遺失連線。 特別是,如果 [輸出] 窗格未設定為 [測試],您可能不會立即看到訊息。 如果連線遺失,您可以使用測試總管中的環境下拉式清單,將連線設定回本機環境,然後再次選取遠端環境以重新連線。
設定遠端測試環境
環境是使用方案根目錄中的 testenvironments.json 檔案來指定。 json 檔案結構會實作下列結構描述:
{
"version": "1", // value must be 1
"environments": [
{ "name": "<unique name>", ... },
...
]
}
testenvironments.json 中的環境屬性
testenvironments.json 檔案具有下列環境屬性。
屬性 | 類型 | 描述 |
---|---|---|
name |
string | Test Explorer 中顯示的使用者易記環境名稱。 它在 testEnvironments.json 檔案內必須是唯一的。 |
localRoot |
string | [選用] 本機電腦上的路徑 (絕對或相對於解決方案目錄),其投射到遠端環境。 如果未指定,則預設值為 Git 存放庫內容中的存放庫根目錄 (在 Visual Studio 2022 17.1 版和更新版本上)。 在 Git 存放庫之外,預設值為方案目錄。 |
type |
列舉 | 表示遠端環境的類型。 這個值可以是 docker 、wsl 或 ssh 。 |
dockerImage |
string | 要載入 Docker 環境中的 Docker 映像名稱。 如果環境 type 是 docker ,則需要這個值。 |
dockerFile |
string | Docker 檔案的路徑,相對於解決方案目錄,在 Docker 環境中建置映像並載入。 如果環境 type 是 docker ,則需要這個值。 |
wslDistribution |
string | 用來執行測試環境的本機 WSL 散發名稱。 如果環境 type 是 wsl ,則需要這個值。 |
remoteUri |
string | 指定遠端電腦連線的 uri。 例如: ssh://user@hostname:22 。 如果環境 type 是 ssh ,則需要這個值。 |
注意
您必須指定 dockerImage
或 dockerFile
屬性,但不能同時指定這兩個屬性。
本機容器連線
若要連線到在本機執行的容器,您必須在本機電腦上具備 Docker Desktop。 或者,啟用 WSL2 整合,以提升效能。
對於 Dockerfile,您可以在方案根目錄中的 testEnvironments.json 檔案中指定環境。 其會使用下列屬性:
{
"name": "<name>",
"type": "docker",
"dockerImage": "<docker image tag>",
}
下列範例顯示名為 <mcr.microsoft.com/dotnet/sdk>
之本機容器映像的 testenvironments.json 檔案。
{
"version": "1",
"environments": [
{
"name": "linux dotnet-sdk-5.0",
"type": "docker",
"dockerImage": "mcr.microsoft.com/dotnet/sdk"
}
]
}
下列範例顯示 Dockerfile,用於執行以 .NET 5.0 為目標的測試。 第二行可確保偵錯工具可以在容器中連線並執行。
FROM mcr.microsoft.com/dotnet/sdk:5.0
RUN wget https://aka.ms/getvsdbgsh && \
sh getvsdbgsh -v latest -l /vsdbg
容器必須在本機電腦上有建置映像。 您可以使用命令 docker build -t <docker image name> -f <path to Dockerfile> .
建置容器,請務必在命令結尾包含句號 .
。
下列範例顯示使用 dockerFile
屬性,而不是 dockerImage
屬性。
{
"version": "1",
"environments": [
{
"name": "GitServiceUnix",
"type": "docker",
"dockerFile": "Dockerfile.test"
}
]
}
本機 WSL2 連線
若要在 WSL2 上遠端執行測試,您必須在本機電腦上啟用 WSL2 整合。
您可以使用下列結構描述,可以在方案根目錄中的 testEnvironments.json 檔案中指定環境。 將 wslDistribution
屬性的 <Ubuntu>
值取代為 WSL2 發行版本的安裝。
{
"version": "1",
"environments": [
{
"name": "WSL-Ubuntu",
"type": "wsl",
"wslDistribution": "Ubuntu"
}
]
}
SSL 連線
您可以在 [工具]>[選項]>[跨平台]>[連接管理員] 中,新增或移除 SSH 連線。 選取 [新增] 以輸入主機名稱、連接埠,以及您需要的任何認證。
您可以使用下列結構描述,可以在方案根目錄中的 testEnvironments.json 檔案中指定環境。 將 remoteUri
屬性的 <ssh://user@hostname:22>
值取代為您的 SSH 值。
{
"version": "1",
"environments": [
{
"name": "ssh-remote",
"type": "ssh",
"remoteUri": "ssh://user@hostname:22"
}
]
}
遠端 Windows 環境的必要條件
檢閱下列遠端 Windows 環境的必要條件。
確保在遠端電腦上啟用了 Windows 投影檔案系統。 您可以從管理員 PowerShell 視窗執行下列程式碼以啟用它:
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
視需要重新啟動環境。
確定已設定 SSH。 您可以在安裝 OpenSSH 中檢閱步驟。 從管理員 PowerShell 視窗執行下列命令,以啟動 SSH 伺服器:
Start-Service sshd
請確定已安裝測試所需的適當 .NET 執行階段。 您可以下載適用於 Windows的 .NET。
準備環境以偵錯測試:
在遠端環境中安裝遠端工具 SKU。
以管理員身分啟動遠端偵錯程式,並確定 Visual Studio 使用者具有連線權限。
遠端 Linux 環境的必要條件
檢閱遠端 Linux 環境的下列必要條件。
確保已設定並執行 ssh。
使用套件管理員安裝
fuse3
。確定您的測試所需的適當 .NET 執行階段已安裝在遠端 Linux 環境中。
使用 Test Explorer 來執行和偵錯遠端測試
以下說明您可以如何使用測試總管來執行和偵錯遠端環境測試。
作用中的環境是透過 Test Explorer 工具列中的下拉式清單來選取。 目前,一次只能啟用一個測試環境。
在您選取環境之後,系統就會在新的環境中探索並執行測試。
您現在可以在遠端執行測試,並在環境中對測試進行偵錯!
測試總管可能會提示您安裝一些遺漏的環境必要條件,並嘗試安裝遺漏的相依性。 不過,大部分的遠端環境佈建取決於使用者規格而定。