遠端測試 (實驗性預覽)

遠端測試可讓開發人員將 Visual Studio 2022 連線到遠端環境,以便執行和偵錯測試。 此功能對於將程式碼部署到多個不同目標環境 (例如不同的 Windows 或 Linux 作業系統) 的跨平台開發人員相當有用。 例如,開發人員通常會將變更推送至 CI 管線,才能從 Linux 上執行的測試取得意見反應。 透過遠端測試功能,您可以將測試總管連線至遠端環境,直接從 Visual Studio 執行 Linux 測試。

需求

下列需求適用於遠端測試的實驗版本:

  • 您必須執行 Visual Studio 2022 更新 17.0 預覽版 3 或更新版本。

  • 目前,該功能僅支援 .NET 和 .NET Framework 測試。

  • 目前此功能支援遠端環境中的 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 環境的必要條件。

  1. 確保在遠端電腦上啟用了 Windows 投影檔案系統。 您可以從管理員 PowerShell 視窗執行下列程式碼以啟用它:

     Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
    

    視需要重新啟動環境。

  2. 確定已設定 SSH。 您可以在安裝 OpenSSH 中檢閱步驟。 從管理員 PowerShell 視窗執行下列命令,以啟動 SSH 伺服器:

    Start-Service sshd
    
  3. 請確定已安裝測試所需的適當 .NET 執行階段。 您可以下載適用於 Windows的 .NET。

  4. 準備環境以偵錯測試:

    1. 在遠端環境中安裝遠端工具 SKU。

    2. 以管理員身分啟動遠端偵錯程式,並確定 Visual Studio 使用者具有連線權限。

遠端 Linux 環境的必要條件

檢閱遠端 Linux 環境的下列必要條件。

  1. 確保已設定並執行 ssh。

  2. 使用套件管理員安裝 fuse3。

  3. 確定您的測試所需的適當 .NET 執行階段已安裝在遠端 Linux 環境中。

使用 Test Explorer 來執行和偵錯遠端測試

以下說明您可以如何使用測試總管來執行和偵錯遠端環境測試。

  • 作用中的環境是透過 Test Explorer 工具列中的下拉式清單來選取。 目前,一次只能啟用一個測試環境。

    [測試總管] 中的遠端測試環境下拉式清單

  • 在您選取環境之後,系統就會在新的環境中探索並執行測試。

    在遠端環境中探索和執行測試

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

    在測試總管中檢視來自遠端環境的測試結果

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