遠端測試可讓開發人員將 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 工具列中的下拉式清單來選取。 目前,一次只能啟用一個測試環境。
![[測試總管] 中的遠端測試環境下拉式清單](media/remote-test-drop-down.png?view=visualstudio)
在您選取環境之後,系統就會在新的環境中探索並執行測試。

您現在可以在遠端執行測試,並在環境中對測試進行偵錯!

測試總管可能會提示您安裝一些遺漏的環境必要條件,並嘗試安裝遺漏的相依性。 不過,大部分的遠端環境佈建取決於使用者規格而定。