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 , wsl veya ssh olabilirdocker . |
dockerImage |
Dize | Docker ortamında yüklenecek Docker görüntüsünün adı. Ortam type docker ise 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 docker ise bu değer gereklidir. |
wslDistribution |
Dize | Test ortamının çalıştırıldığı yerel WSL dağıtımının adı. Ortam type wsl ise bu değer gereklidir. |
remoteUri |
Dize | Uzak makineye bağlantıyı belirten bir uri. Örneğin, ssh://user@hostname:22 . Ortam type ssh ise 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.
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.
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
Testleriniz için gereken uygun .NET çalışma zamanının yüklendiğinden emin olun. Windows için .NET'i indirebilirsiniz.
Ortamı hata ayıklama testlerine hazırlayın:
Uzak ortama Uzak araçlar SKU'su yükleyin.
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.
Ssh'nin yapılandırıldığından ve çalıştığından emin olun.
Paket yöneticisi kullanarak yükleyin
fuse3
.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.
Bir ortam seçtikten sonra testler bulunur ve yeni ortamda çalıştırılır.
Artık testlerinizi uzaktan çalıştırabilir ve testlerinizin hatalarını ortamlarda ayıklayabilirsiniz!
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.