Aracılığıyla paylaş


Uzaktan Test (deneysel önizleme)

Uzaktan test, geliştiricilerin test çalıştırma ve hata ayıklama için Visual Studio 2022'yi uzak ortamlara bağlamasını sağlar. Bu işlevsellik, farklı Windows veya Linux işletim sistemleri gibi birden çok farklı hedef ortamlara kod dağıtan platformlar arası geliştiriciler için kullanışlıdır. Örneğin, bir geliştirici normalde Linux üzerinde çalışan bir testten geri bildirim almak için değişiklikleri CI işlem hattına iletir. Uzaktan test özelliğiyle, Test Gezgini'ni uzak bir ortama bağlayarak Linux testlerini doğrudan Visual Studio'dan çalıştırabilirsiniz.

Gereksinimler

Aşağıdaki gereksinimler, uzaktan testin deneysel sürümü için geçerlidir:

  • Visual Studio 2022 Güncelleştirme 17.0 Önizleme 3 veya üzerini çalıştırıyor olmanız gerekir.

  • Şu anda özellik yalnızca .NET ve .NET Framework testlerini destekler.

    • Diğer diller için uzaktan test desteğiyle ilgileniyorsanız, bir öneride bulunabilir veya mevcut bir öneriyi destek oylayabilirsiniz. C++ uzaktan test desteği.
  • Şu anda bu özellik uzak ortamda Windows, Ubuntu ve Debian görüntülerini desteklemektedir. .NET Framework için yalnızca uzak Windows ortamları desteklenir.

  • Şu anda ortamın sağlanmasının büyük kısmı kullanıcının belirtimine bırakılıyor.

    Kullanıcının hedef ortama gerekli bağımlılıkları yüklemesi gerekir. Örneğin, testleriniz .NET 6.0'ı hedeflediyse kapsayıcıda Dockerfile'ınız aracılığıyla .NET 6.0 yüklü olduğundan emin olmanız gerekir. Testleri uzaktan çalıştırmak ve bulmak için gereken uzak ortama .NET Core yükleme istemi olabilir.

  • Çıkış>Testleri bölmesini kullanarak uzak ortama bağlantı durumunuzu izlemeyi planlayın.

    Örneğin, kapsayıcı durursa Çıkış>Testleri bölmesinde bir ileti görüntülenir. Özellik tüm senaryoları algılamayabilir, bu nedenle bağlantının kaybedilmiş gibi görünerek çıkışınızı denetlemeyi planlayın. Özellikle, Çıkış bölmesi "Test" olarak ayarlanmadıysa iletiyi hemen göremeyebilirsiniz. Bağlantı kesilirse, bağlantıyı yerel ortamınıza geri ayarlamak için Test Gezgini'ndeki ortam açılan listesini kullanabilir ve ardından yeniden bağlanmak için uzak ortamı yeniden seçebilirsiniz.

Uzaktan test ortamını ayarlama

Ortamlar, çözümünüzün kökündeki testenvironments.json dosyası kullanılarak belirtilir. json dosya yapısı aşağıdaki şemayı uygular:

{
    "version": "1", // value must be 1
    "environments": [
        { "name": "<unique name>", ... },
        ...
    ]
}

testenvironments.json ortamın özellikleri

testenvironments.json dosyası aşağıdaki ortam özelliklerine sahiptir.

Özellik Türü Veri Akışı Açıklaması
name Dize Test Gezgini'nde görüntülenen kullanıcı dostu ortam adı. testEnvironments.json bir dosya içinde benzersiz olmalıdır.
localRoot Dize [İsteğe bağlı] Uzak ortama yansıtılan yerel makinedeki yol (mutlak veya çözüm dizinine göre). Belirtilmezse, varsayılan değer git deposu bağlamındaki depo köküdür (Visual Studio 2022 sürüm 17.1 ve sonraki sürümlerde). Git deposunun dışında varsayılan değer çözüm dizinidir.
type enum Uzak ortamın türünü gösterir. Değer , wslveya ssholabilirdocker.
dockerImage Dize Docker ortamında yüklenecek Docker görüntüsünün adı.
Ortam type dockerise bu değer gereklidir.
dockerFile Dize Docker ortamında görüntü oluşturmak ve yüklemek için çözüm dizinine göre docker dosyasının yolu.
Ortam type dockerise bu değer gereklidir.
wslDistribution Dize Test ortamının çalıştırıldığı yerel WSL dağıtımının adı.
Ortam type wslise bu değer gereklidir.
remoteUri Dize Uzak makineye bağlantıyı belirten bir uri. Örneğin, ssh://user@hostname:22.
Ortam type sshise bu değer gereklidir.

Not

veya dockerFile özelliğini belirtmeniz gerekir, ancak her iki özelliği de belirtmemelisinizdockerImage.

Yerel kapsayıcı bağlantıları

Yerel olarak çalışan bir kapsayıcıya bağlanmak için yerel makinenizde Docker Desktop olmalıdır. İsteğe bağlı olarak, daha iyi performans için WSL2 tümleştirmesini etkinleştirin.

Dockerfile için ortam, çözümünüzün kökündeki testEnvironments.json dosyasında belirtilebilir. Aşağıdaki özellikleri kullanır:

{
    "name": "<name>",
    "type": "docker",
    "dockerImage": "<docker image tag>",
}

Aşağıdaki örnekte adlı <mcr.microsoft.com/dotnet/sdk>yerel kapsayıcı görüntüsü için testenvironments.json dosyası gösterilmektedir.

{
    "version": "1",
    "environments": [
        {
            "name": "linux dotnet-sdk-5.0",
            "type": "docker",
            "dockerImage": "mcr.microsoft.com/dotnet/sdk"
        }
    ]
}

Aşağıdaki örnekte .NET 5.0'a yönelik testleri çalıştırmak için bir Dockerfile gösterilmektedir. İkinci satır, hata ayıklayıcının kapsayıcınıza bağlanıp çalıştıramasını sağlar.

FROM mcr.microsoft.com/dotnet/sdk:5.0

RUN wget https://aka.ms/getvsdbgsh && \
    sh getvsdbgsh -v latest  -l /vsdbg

Kapsayıcının yerel makinenizde yerleşik bir görüntüsü olmalıdır. komutuyla bir kapsayıcı oluşturabilirsiniz Komutun docker build -t <docker image name> -f <path to Dockerfile> . sonuna nokta . eklediğinizden emin olun.

Aşağıdaki örnekte özelliği yerine özelliğinin dockerFile kullanımı gösterilmektedir dockerImage .

{
    "version": "1",
    "environments": [
        {
            "name": "GitServiceUnix",
            "type": "docker",
            "dockerFile": "Dockerfile.test"
        }
    ]
}

Yerel WSL2 bağlantıları

WSL2'de testleri uzaktan çalıştırmak için yerel makinenizde WSL2 tümleştirmesini etkinleştirmeniz gerekir.

Ortam, aşağıdaki şema kullanılarak çözümünüzün kökündeki testEnvironments.json dosyasında belirtilebilir. özelliğinin <Ubuntu> wslDistribution değerini WSL2 Dağıtımı yüklemenizle değiştirin.

{
    "version": "1",
    "environments": [
        {
            "name": "WSL-Ubuntu",
            "type": "wsl",
            "wslDistribution": "Ubuntu"
        }
    ]
}

SSH bağlantıları

Araçlar Seçenekleri Platformlar > Arası Bağlantı Yöneticisi SSH bağlantıları ekleyebilir veya kaldırabilirsiniz.> > Konak adını, bağlantı noktasını ve ihtiyacınız olan kimlik bilgilerini girmek için Ekle'yi seçin.

Ortam, aşağıdaki şema kullanılarak çözümünüzün kökündeki testEnvironments.json dosyasında belirtilebilir. özelliğinin <ssh://user@hostname:22> remoteUri değerini SSH değerinizle değiştirin.

{
    "version": "1",
    "environments": [
        {
            "name": "ssh-remote",
            "type": "ssh",
            "remoteUri": "ssh://user@hostname:22"
        }
    ]
}

Uzak Windows ortamı için önkoşullar

Uzak bir Windows ortamı için aşağıdaki önkoşulları gözden geçirin.

  1. Uzak makinede Windows Yansıtılmış Dosya Sistemi'nin etkinleştirildiğinden emin olun. Etkinleştirmek için bir yönetici PowerShell penceresinden aşağıdaki kodu çalıştırabilirsiniz:

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

    Ortamı gerektiği gibi yeniden başlatın.

  2. SSH'nin ayarlandığından emin olun. OpenSSH'yi Yükleme adımlarını gözden geçirebilirsiniz. Bir yönetici PowerShell penceresinden aşağıdaki komutu çalıştırarak SSH sunucusunu başlatın:

    Start-Service sshd
    
  3. Testleriniz için gereken uygun .NET çalışma zamanının yüklendiğinden emin olun. Windows için .NET'i indirebilirsiniz.

  4. Ortamı hata ayıklama testlerine hazırlayın:

    1. Uzak ortama Uzak araçlar SKU'su yükleyin.

    2. Uzaktan hata ayıklayıcıyı yönetici olarak başlatın ve Visual Studio kullanıcısının bağlanma izinlerine sahip olduğundan emin olun.

Uzak Linux ortamı için önkoşullar

Uzak linux ortamı için aşağıdaki önkoşulları gözden geçirin.

  1. Ssh'nin yapılandırıldığından ve çalıştığından emin olun.

  2. Paket yöneticisi kullanarak yükleyin fuse3 .

  3. Testlerinizin gerektirdiği uygun .NET çalışma zamanının uzak Linux ortamına yüklendiğinden emin olun.

Uzak testleri çalıştırmak ve hatalarını ayıklamak için Test Gezgini'ni kullanma

Uzak ortam testlerinizi çalıştırmak ve hatalarını ayıklamak için Test Gezgini'ni şu şekilde kullanabilirsiniz.

  • Etkin ortam, Test Gezgini araç çubuğundaki bir açılan liste aracılığıyla seçilir. Şu anda aynı anda yalnızca bir test ortamı etkin olabilir.

    Test Gezgini'nde uzaktan test ortamı açılan listesi

  • Bir ortam seçtikten sonra testler bulunur ve yeni ortamda çalıştırılır.

    Testler uzak ortamlarda bulunur ve yürütülür

  • Artık testlerinizi uzaktan çalıştırabilir ve testlerinizin hatalarını ortamlarda ayıklayabilirsiniz!

    Test gezgininde uzak ortamdan test sonuçlarını görüntüleme

  • Test Gezgini bazı eksik ortam önkoşullarını yüklemenizi ve eksik bağımlılıkları yüklemeyi denemenizi isteyebilir. Ancak, uzak ortamın sağlanmasının büyük kısmı kullanıcının belirtimine göre belirlenir.