Visual Studio 2017'de bulunmayan Birim Testleri


213

Yüklediğimden beri VS 2017 ile mücadele ediyorum. Artık Birim Testleri yalnızca "dotnet test" komut satırından çalışacak gibi görünüyor.

Projem .NET Core 1.1.1. SDK ve 1.1.1 için çerçeve güncellemesi yüklü.

Ben de tam olarak aynı şekilde başarısız MSDN ( https://msdn.microsoft.com/en-us/library/ms182532.aspx ) örnek denedim .

Testler ve ana proje için tüm NuGet paketleri günceldir. Hem test projesi hem de ana proje hatasız bir şekilde inşa edilir. Testler komut satırından başarıyla çalışır.

Herkes VS 2017'de çalıştırmak için Birim Testleri aldı, öyleyse nasıl?

Teşekkürler John


Güncelleme - Genişlet

İşte GitHub üzerinde çalışmayan basit bir test projesi örneği . Bu xUnit ile bir örnek ama MS testleri inşa NUnit ve visual studio denedim. Hangi test veya değişiklik yaptığım önemli değil, VS test çalıştırıcısını herhangi bir test bulamıyorum.

Ne Denedim

  • VS test önbellek dosyalarını silme DEL %TEMP%\VisualStudioTestExplorerExtensions
  • VS yeniden başlatılıyor
  • Test Gezgini'nin Kapatılması / Açılması
  • yüklü xUnit için Microsoft.DotNet.InternalAbstractions( SO yazısına bakın )
  • NUnit için adaptörün kurulu olduğundan ve NUnit paketi ile aynı sürümde (3)
  • test -> test settings -> default processor architecture x86 olarak ayarlandı

Soru
Herkes VS2017'de (.csproj proje dosyaları) .Net Core 1.1.0 çözümünün çalışan bir örneğini sağlayabilir, burada VS test gezgini birim testlerini başarıyla bulur VEYA verilen örnekte sorunu gösterebilir.


VS2017'nin gerekli tüm paketleri yüklemediğini öğrendim. MonoGame'imi eski PC'den yeni yüklenen Windows 10 ve VS 2017 ile yenisine taşımaya çalıştığımda eksik paketler hakkında garip hatalar atmaya başladı. VS2015'i VS2017 ile birlikte yükledikten sonra tüm problemler ortadan kalktı. Belki de VS2015'i yüklemeyi deneyin.
Mateusz

2
Visual Studio yükleyicisi ile Test paketleri kurmaya çalışın
Markiian Benovskyi

VS 2017'nin tüm ortam değişkenlerini doğru ayarlayıp ayarlamadığını araştırıyorum.
John Pezzanite

1
NUnit için, bağdaştırıcı için NuGet paketini kullanmanız ve bunun 3.8.0-alpha1 veya daha yeni olması gerekir.
Rob Prouse

2
Benim durumumda, sadece app.configtest projemdeki bir dosyanın varlığıydı : stackoverflow.com/a/47497668/67824 .
Ohad Schneider

Yanıtlar:


189

Benim durumumda, test adaptörlerimi ve test çerçevemi yükseltmek zorunda olduğum ortaya çıktı . Bitti.

NuGet Paket Yöneticisi'ni kullanan örnek:

resim açıklamasını buraya girin


4
Bu da bana yardımcı oldu! "Nuget Paketleri" ni çözüm düzeyinde yapabileceğinizi ve bunun gerekli olduğu tüm projeler için yapabileceğinizi unutmayın. Daha sonra "belirsiz referans" hataları alabilirsiniz - bunlar için, sadece eski DLL (Microsoft.VisualStudio.QualityTools.UnitTestFramework) referanslardan kaldırın
Prashanth Subramanian

48
Bunlar NuGet paketlerinin değil Visual Studio'nun uzantıları olmalıdır.
Jaider

1
Birçok eski MSTest projemiz var ve bunun bir NuGet paketine taşındığının farkında değildim. Bu benim için de çözdü, aslında VS Test Explorer'ın da testlerimi bulamadığını fark edene kadar ReSharper'ın yeni sürümlerinde bir hata olduğunu düşündüm.
David Anderson

1
Bu cevabın belirttiği ile aynı şeyi yaptım. VS2017 çözümümde, bir MSTest projesi ekledim, birkaç test ekledim, ancak çözümü oluşturmak şu sonuçlarla sonuçlanacaktır: Keşif testi tamamlandı: 0 bulundu. Bu nedenle, test projesi için NuGet Package Manager'da (çözüm düzeyinde de yapabilirsiniz), MSTest.TestAdapter ve MSTest.TestFramework'ı v1.1.18'den v1.2.0'a güncelledim. Ardından, bir derleme yaptıktan sonra, testlerim şimdi Test Gezgini'nde görünüyor.
Kershaw

1
Benim için harika çalıştı belirli test projesi için VS2017 nuget paket yöneticisine gitmek zorunda ve sadece nunit vb sonra inşa> yeniden inşa ve tüm iyi gibi çeşitli paketleri güncellendi.
Tahir Khalid

126

Bu sadece benim için çalıştı (bir şeyi bozan çalışma alanlarını değiştirmenin sonucu olup olmadığını bilmiyorum):

% TEMP% \ VisualStudioTestExplorerExtensions içinde VS test önbellek dosyalarını silme ve VS2017'yi yeniden başlatın.


4
Bu bir kez işe yaradı, daha sonra değil. Benim için ne (bu kez) düzeltti TestResults klasörü ve bin / obj (bu geçici dizin temizleme ile birlikte)
siliyordu

24
Nereye merak ediyor herkes %TEMP%- komut penceresini getirin ve yazınecho %TEMP%
mike123

21
Klasör geçici olarak mevcut değil: /
Douglas Gaskell

peki bu tür davranışların nedeni nedir?
Mykhailo Seniutovych

1
% TEMP% 'a erişmenin en kolay yolu + R kazanmak ve% TEMP% yazmak
PontiusTheBarbarian

58

.NET Core için test bağdaştırıcıları için API, Visual Studio 2017'nin yayımlanması ve project.jsonbiçimden formata geçişi ile değişti csproj. Bu mevcut dotnet-test-*bağdaştırıcıları dotnet-test-nunitmodası geçmiş hale getirdi.

Bağdaştırıcılar güncelleştirildi, ancak Visual Studio'da veya komut satırında sınamaları kurma ve çalıştırma yönteminiz dotnet testsınama projelerinizde farklı başvurular gerektirir. Bu referans paketlerini eski oldukları için bu formatta bulduğunuz belgelere dikkat edindotnet-test-* .

İlk olarak, test projenizin .NET Core veya .NET Framework gibi belirli bir platformu hedeflemesi gerekir. Test ettiğiniz kod .NET Standard olsa bile .NET Standard'ı hedefleyemez . Bunun nedeni, testlerin hedefinin, testleri hangi platformda çalıştırılacağını göstermesidir. .NET Standard, birçok platformda çalışabilmesi için bir PCL (Taşınabilir Sınıf Kütüphanesi) gibidir.

Ardından, seçtiğiniz Microsoft.NET.Test.Sdktest çerçevesine ve uyumlu bir test adaptörüne referanslar eklemeniz gerekir . NUnit için referanslarınız şöyle görünecek,

<itemgroup>
    <packagereference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></packagereference>
    <packagereference Include="NUnit" Version="3.7.1"></packagereference>
    <packagereference Include="NUnit3TestAdapter" Version="3.8.0"></packagereference>
</itemgroup>

Yukarıdaki bir yorumda,

<ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

Bu kesinlikle gerekli değildir, ancak yardımcı olabilir. Testlerle projeleri hızlı bir şekilde bulmasına yardımcı olmak için Visual Studio tarafından tüm birim test projelerine otomatik olarak eklenir.

Testleriniz Visual Studio'da görünmüyorsa, denemeniz gereken ilk şey çözümünüzü kapatıp yeniden açmaktır. Visual Studio'da, projelerde yaptığınız değişiklikleri düzenlediğinizde algılanmayan hatalar var gibi görünüyor.

Daha fazla bilgi için bkz . Visual Studio 2017'de .NET Core'u NUnit ile sınama


2
.NET Standard yerine .NET Framework'ü hedeflemek benim için çalıştı. Teşekkürler.
Ben Griswold

7
Bu Microsoft.NET.Test.SDK başvurusu projemde eksikti ve hiçbir yerde görüntülenmesi için herhangi bir şey olduğuna dair hiçbir belirti yoktu. Nuget konsolu aracılığıyla ekledim ve her şey çalışmaya başladı. Referans listesi için teşekkürler!
GWhite

Bu klasörü bir iş arkadaşımdan geçici dizinime kopyalamak ve VS'yi yeniden başlatmak zorunda kaldım:% TEMP% \ VisualStudioTestExplorerExtensions \ MSTest.TestAdapter.1.1.18
Heiner

Hedef Çerçevemi değiştirirsem netstandard 2.0 projesini nasıl test edebilirim? Artık derleyemiyorum çünkü netstandard2.0 projesine net46 etiketli bir proje tarafından referans verilemiyor
Jerome2606

1
Bu benim için çalıştı. Ayrıntılı çözüm için teşekkürler.
Talha Ashfaque

42

Aynı sorunu yaşadım ve aşağıdakileri yaparak işe koyuldum ..:

  • Öncelikle tüm açık Visual Studio örneklerini kapatın ve şu klasörü silin:% TEMP% \ VisualStudioTestExplorerExtensions. ( Visual Studio ile testleri çalıştırma )
  • Nuget paket yöneticinize gidin ve önce Microsoft.NET.Test.Sdk'i (15.3.0-önizleme-20170425-07) yükleyin ve ardından xunit.runner.visualstudio'yu (2.3.0-beta1-build1309) yükleyin. Testlerimi tespit etmek için en son VS 2017'yi almak için yüklemem gereken tüm paketleri görmek için ekteki Nuget ekran görüntüsüne bakın.Ekran Görüntüsü

35
% Temp% \ VisualStudioTestExplorerExtensions silmek benim için yeterliydi.
Juan Pablo Gomez

Yeap. Sadece bunu silmek ve VS'yi yeniden başlatmak sorunu çözdü.
Juan Carlos

Öncelikle buna neyin sebep olduğunu bilen var mı? Şimdi bana iki kez oldu, ama o klasörü silmek ve VS yeniden başlatmak çalıştı. Sadece garip.
RubyHaus

@PmanAce - Aslında yaptım. İki farklı TFS örneği kullanıyorum (proje başına bir tane), bu yüzden projeleri değiştirdiğimde çalışma alanı otomatik olarak değişiyor.
RubyHaus

klasörü silmek ve nuget eklemek Microsoft.NET.Test.Sdkbenim için çalışıyor gibi görünüyordu .. teşekkür ederim StackOverflow. (.NET Framework WebApi 2 çözümü)
bkwdesign 8:18

40

Test sınıfını herkese açık hale getirmeyi unutmak, içindeki test yöntemlerinin keşfedilmesini önler

Ben varsayılan bir xUnit projesi vardı ve birkaç Unit Test, bir denetleyici test sınıfı ile değiştirerek, UnitTest1.cs örnek sildi, ancak hiçbiri bulunamadı

Uzun hikaye kısa, xUnit, Test.Sdk, xUnit.runner paketlerini güncelledikten ve projeyi yeniden oluşturduktan sonra bir derleme hatasıyla karşılaştım:

Hata xUnit1000 Test sınıfları herkese açık olmalıdır

Neyse ki güncellenen sürüm bana bazı sıkıntıları gidermek için bu istisnayı attı

Test sınıfını herkese açık olacak şekilde değiştirmek sorunumu çözdü


6
neden aşağı oy emin değilim, ama benim sabah kahvesi% 100 önce bu benim tarafımdan gözardı edildi.
Andrei

1
Bu soruya / soruna diğer tüm cevapları denedim ve bu nihayet işe yaradı!
FastTrack

3
Bu inanılmaz derecede utanç verici ama .. her neyse. Komik olan şey, VS2017'de bir test paketi davası oluşturursanız, sınıfı değilpublic , sadece sınıfı oluşturmasıdır, bu nedenle publictanımlayıcıyı ekleyinceye kadar keşfetmez .
briosheje

elbette. benim kötü - benim bu özelliğe sahip olmalı.
Crismogram

10

Benim durumumda test projesini x64Mimarlık'a hedefledim ve test ayarı Mimarlık (test-> Varsayılan İşlemci Mimarisi) olarak değiştirildi x86. Eşleşmediler.

Test ayarını geri x64getirdikten sonra tüm testler yeniden yapılandırıldı ve tüm testler yeniden keşfedildi.


vs2017'de Test -> Test Ayarları -> Varsayılan İşlemci Mimarisi
IcyBrk menüsünden

8

VS 2017 ile UnitTest'imi bulma konusunda sorun yaşadım. John'un sorduğu sorun tam değildi - ama bu google'da aradığım ilk sonuçtu, bu yüzden sorunumu paylaşmak istedim.

VS2010'dan VS2013, VS2015 üzerinden geçen eski bir çözümüm vardı. Şimdi VS2017'de [TestMethod]Öznitelik için ad alanlarının değiştiği görülüyor .

Kullanmadan önce

Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0

Projede yeni bir Test.dll oluşturdum ve varsayılan olarak kullanılan

Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0

Benim çözümüm VS2017 içinden yeni bir UnitTest projesi yaratmaktı. Belki eski test projesi için montaj referanslarını değiştirmek de işe yarardı. Yeni referansla VS2017 bu birim testleri keşfetti.


Ne yazık ki yeni bir birim test projesi bile benim için test göstermiyor: /
Douglas Gaskell

7

MSDN altında güncel olmayan makaleleri okumayın. .NET Core ile ilgili malzemeler docs.microsoft.com altındadır.

https://docs.microsoft.com/en-us/dotnet/articles/core/testing/

Genel olarak, birim test senaryolarını içerecek bir .NET Core konsol uygulamasına ihtiyacınız vardır.


Çok teşekkürler, Lex. Bu makale doğruysa, .NET Core'u test etmenin tek yolu komut satırından - böylece VS 2015'te testler yürütürken sahip olduğumuz tüm VS entegrasyonunu kaybetmektir. Bu konuda doğru muyum?
John Pezzanite

XUnit.net veya MSTest kullanıyor musunuz?
Lex Li

@JohnPezzanite yaptıklarınızdan daha fazlasını göstermelisiniz (mümkünse bir GitHub repo). GitHub'da kusursuz çalışan projelerim ve daha birçoklarım var.
Lex Li

Verdiğim satırdaki örneği izleyin. .NET standardı ve .NET Core ile, örnekte olduğu gibi Microsoft'un birim testleri ve xUnit ile denedim. .NET standardı VS 2017 ile tümleştirilirken .NET Core yalnızca komut satırından çalışır. Ama yukarıda söylediğim şeyi tekrarlıyorum. Microsoft, VS 2017'nin tüm .NET Core birim testi entegrasyon formunu kaldırmış gibi görünüyor.
John Pezzanite

@JohnPezzanite Test GitHub.com/lextm/sharpsnmplib ve NetStandard çözümü.
Lex Li

6

benim için sorun yanlışlıkla iç sınıfta testcas yerleştirilir oldu

[TestClass]
  internal class TestLib {
}

testislerin tanımlanmamasına neden oluyordu.


5

Doğru Microsoft.NET.Test.Sdk kullandığınızdan emin olun:

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />

Sürüm öncesi olanı kullanmayın. Veya konsol uygulamasına (kitaplığa değil) geçmeniz gerekir. Benzer bir sorunum var, ancak en son sürümle (15.0.0) tekrar çalışmaya başlıyor.

Ayrıca, şunları eklemeniz gerekebilir:

  <ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
  </ItemGroup>

ama bunun gereksiz olduğunu düşünmüyorum.


Bu hangi dosyada? "Service Include" bölümünü proje (* .csproj) dosyasında bulabilirim, ancak PackageReference'de bulamıyorum.
Chris Bennet

* Test.csproj dosyanızdaki @ChrisBennet.
Evgeni Nabokov

1
@ evgeni-nabokov haklı. Tüm bu değişiklikler [project] .test.csproj dosyasındadır. Çözeltide proje üzerinde sağ tıklayın ve "Edit [projesini] .test.csproj" bakınız örnek belirleyin: github.com/RenetConsulting/angularcore.net/blob/master/Business/...
Alex Altotsky

5

OP'nin bunu kontrol listesinde listelediğini biliyorum, ancak Visual Studio 2017'nin temiz yüklemesini yaparken ve yeni proje kurarken bu noktayı göz ardı etmek kolaydır. NUnit proje şablonu ve NUnit Framework dışında, NUnit bağdaştırıcısını ayrıca yüklemek gerekir, örneğin NuGet komutu Install-Package NUnit3TestAdapter -Version 3.9.0. Bundan sonra Visual Studio Community 2017, herhangi bir sorun olmadan birim testleri keşfetmeye başladı.


1
Bu bana yardımcı oldu!
YvesR

Aman Tanrım, bu benim için yaptı. Seni lütufla boğabilseydim yapardım.
Ash

Bu benim için işe yarayan tek çözümdü, teşekkürler!
Vadim Tofan

5

Benim durumumda, projeyi yeni bir çözüme taşıdıktan sonra Test Gezgini testlerimi bulamadı.

Cevap basitçe, projemdeki eski MS Test Adaptörüne bir referansım oldu.

Benim cs.proj dosyamda MS Test bağdaştırıcısının 1.1.11 sürümü için aşağıdaki satırın bir kopyası vardı:

<Import Project="..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" />

Sorunu çözmek için,

  1. Projeye sağ tıklayın ve 'Projeyi Kaldır' seçeneğini seçin.
  2. Projeye sağ tıklayın ve 'Düzenle'yi seçin
  3. Bağdaştırıcının eski sürümünü içe aktaran satırı kaldırın.
  4. Projeye sağ tıklayın ve 'Projeyi Yeniden Yükle'yi seçin.
  5. Çözümü / Projeyi Yeniden Oluştur

Aynı sorun vardı. Çözümü kaldırmak ve yeniden oluşturmak işe yaramadı. VS yeniden başlatıldı ve testler keşfedildi!
Mike Ward

4

Visual Studio'nun testlerimi bulamamasıyla bu sorunu yaşadım, yöntemin yanı sıra onları çalıştırmak için düğmeyi göremedim ve projedeki tüm testleri çalıştırarak alınmadılar.

Test sınıfım herkese açık değildi! Herkese açık hale getirilmesi VS'nin testleri keşfetmesine izin verdi.


2

Benim için Visual Studio 2017 ile mükemmel çalışan yeni bir test projesi oluşturmak daha kolaydı ... ve sadece test dosyalarını kopyalayın, referanslar ve NuGet paketleri gerektiği gibi kopyalayın.

resim açıklamasını buraya girin


yeni bir proje yaratmak muhtemelen saatlerce baş ağrısı kurtardı!
M.kazem Akhgary

2

Benim durumumda, test projesini daha önceki bir .Net sürümünden yükselttiğim bir projeydi. app.config içinde bağımlı derleme önceki sürümleri için birleştirme bağlamaları vardı.

App.config dosyasındaki assemblyballings'i düzelttikten sonra, testlerim keşfedildi.


2

keşif

Yukarıdaki en iyi yanıtlar benim için işe yaramadı (yeniden başlatma, sürüm 1.1.18'e güncelleme ... Zaten güncellenmiş, geçici dosyaları silip NuGet önbelleğini temizledim vb.).

Ne keşfettim ki MSTest.TestAdapter ve MSTest.Framework farklı başvurular vardı. farklı test projelerinde (benim çözüm iki vardır). Biri 1.1.18'e işaret etti ...

packages.config

<package id="MSTest.TestAdapter" version="1.1.18" targetFramework="net461" />
<package id="MSTest.TestFramework" version="1.1.18" targetFramework="net461" />

... fakat bir başkasının 1.1.11 referansları var. Yukarıdaki yanıtlardan bazıları, Visual Studio'yu yeniden başlattıktan sonra geçici dizinimde (% TEMP% \ VisualStudioTestExplorerExtensions \) iki kütüphanenin sürümü görüntülendiğinde bu keşfe yol açar.

Çözüm

Sadece benim Packages.config 1.1.18 sürümüne güncelleme VS benim birim testleri işlevselliği geri yükledi. MSTest kitaplıklarının yan yana referanslarına izin vermeyen bazı hatalar olduğu anlaşılıyor. Umarım bu size yardımcı olur.

Daha fazla bilgi:

  • Visual Studio 2017 Ent: 15.5.6 (Bu sorunu çözme umuduyla 15.0.1'den güncelledim, ancak her ikisinde de vardı)

2

Çözüm, app.configdosyamı birim test projemden kaldırmaktı . Testler yeniden görünecek!

Bu dosya, proje başvurularında gerçekte mevcut olmayan bağlama komutlarında bazı dll'lere başvurdu. Projeniz için kesinlikle gerekli olan montaj bağlantılarını yeniden ekleyin.


1

Benim durumumda, soruna neden olan çözümde bulunan UWP projesi vardı.

UWP projesini kaldırdığımda testler keşfedildi. Geri yüklediğimde, test tekrar kayboldu.

Tüm projeleri boşaltmaya çalışın ve sadece test projesini koruyun. Test Çalıştırıcısında on yeniden oluşturma çözümü ve test vuruşu belirir. Hangi projenin soruna neden olduğunu bulmak için projeleri tek tek yükleyin ve çözümü her seferinde yeniden oluşturun

örnek repo

VS hata raporu


Cevabı takdir ediyorum ama bu benim sorunum değil. Soruma bağlandığım örnek repoya bakarsanız, çözümde sadece tek bir proje var. Kaldırılacak başka proje yok. Bu çözüm bir test olsa da, gerçek çözümümde boşaltma projeleri söylediklerini denedim ama işe yaramadı.
rayepps

1

Sorun

Sorun Visual Studio makinedeki dotnet çekirdek sürümleri üzerinde 'karışıyor' olmasıdır. Kontrol paneline gittiğimde -> programları kaldır 8 farklı dotnet çekirdekli SDK ve Runtimes yükledim. Bu, bir şekilde VS'nin testleri bulmaya çalışırken sessizce bir hataya neden olmasına neden oldu.

Sorunu Doğrulayın

Komut satırına gidip dotnet sürümünü açarak sorunu doğrulayabilirsiniz $ dotnet --version. Yüklediğiniz en son sürüm dışında bir şey görürseniz, makinenizde bazı uyumsuzluklar vardır ve doğru sürümü kullanmamaktadır. Örnek ... Dotnet çekirdeği 1.0.1yüklüyse, ancak sürümü komut isteminde aldığınızda1.0.0 sorun .

Çözüm

Tüm eski şeyleri silin. Ben sadece (en eski dotnet rc sürümleri) kaldırmak için gerekli olsa ne ile başladım ama sorunu test ederken hala yanlış sürümü verdi. Sonunda tam bir temizlik yapmak için kabul ettim. BEN...

  • Tüm görsel stüdyo uygulamalarının yüklemesi kaldırıldı (VS2015 ve VS2017 makinemde)
  • Dotnet core'un tüm sürümleri kaldırıldı (en yenisi bile)

Makinem tüm VS ve donet'ten tamamen boş olduktan sonra sadece VS2017'yi kurdum (en son dotnet ile birlikte geliyor). Bir xUnit test projesi oluşturdum ve test gezgini testi hemen ÇÖZÜLDÜ buldu

Bu aşırıya kaçmış gibi görünebilir, ancak bunu başka şekillerde düzeltmek için iki hafta geçirdim. Sorununuz varsa, öğeleri kaldırmanız / yeniden yüklemeniz zaman alsa bile, muhtemelen size zaman kazandıracaktır.

Referanslar

  • Sorunu çözme konusunda daha fazla ayrıntı verdiği @epestic blog yayınına bakın .

1

Her şeyi denedim ama hiçbir şey yardımcı olmadı. Benim durumumda birkaç test projesi ile bir çözüm vardı ve bazıları eski ms-test çerçevesini kullanarak Visual Studio sadece bunları buldu.

Kabul edilen cevapta gösterildiği gibi tüm test projeleri için test çerçevesi paketlerini kurdum . Sonra eski kalite araçları referansları kaldırıldı, Visual Studio yeniden başlatıldı ve şimdi tüm testleri görebilirsiniz.


1

C ++ için:

C ++ testleri için özel bir soru olmadığından, ancak konu hemen hemen aynıdır, işte test keşfiyle ilgili sorun yaşadığımda bana yardımcı olan şey.

Masaüstü geliştirmeyi yalnızca C ++ ile yüklediyseniz , çözüm ayrıca isteğe bağlı C ++ Evrensel Windows Platformu araçlarıyla Evrensel Windows Platformu geliştirmesini yüklemektir. . Bunları visual studio web yükleyicisinden seçebilirsiniz.

Daha sonra test projenizi yeniden oluşturun ve test keşfi işe yarayacaktır.

Btw, VS2017'de birim test projesini yarattım. Önemli olabilir, çünkü bazı kullanıcılar VS2015'ten VS2017'ye taşınan projelerde keşif sorunları yaşadıklarını belirtti.


1

Eski .dll dosyasını kaldırmak yardımcı olacaktır. C: \ Users (kullanıcı adınız) \ AppData \ Local \ Temp konumundaki% TEMP% dizininde bulunan geçici dosyaları temizleme


1

Aynı sorunu yaşadım. Benim çözümüm iyiydi ama çözümü açtığımda testlerin bittiğini öğrendim.

Sonunda indirdim Microsoft.VisualStudio.TestPlatform.TestFrameworkveMicrosoft.VisualStudio.TestPlatform.TestFramework.Extensions çok eski bir sürüme indirdim paketleri (NuGet manager'ı kullanarak) ve test yöntemleri ortaya çıktı. Sonra en son sürüme geçtim ve hala vardı.

Bu yüzden paketleri eski sürüme geçirin ve yükseltin.


1

Benim durumumda yukarıdakilerin hiçbiri bana yardım etmiyor. Ancak, NUNit3TestAdapter sürümünü 3.8.0 sürümüne düşürdüm, ardından en son sürüme yükseltin (3.10.0)


1

Bazen testlerin ad alanını değiştirmek işe yarar. Ben aşağıdaki gibi klasör yapısı vardı:

A |___B | |___D |___C___E

Ad alanı Tests gibi düzdü. <Name> ve test penceresinde görünmedi. Ad alanını dizinin yapısına değiştirdiğimde, tüm testler ortaya çıktı. Şimdi istediğim diğer ad alanı yapılarına geri dönebilirim.

Projenizi inşa etmeyi unutmayın!


1

.NET Framework durumunda, test projesinde daha önce aşağıdaki DLL'lere başvurular vardı:

Microsoft.VisualStudio.TestPlatform.TestFramework
Microsoft.VisualStudio.TestPlatform.TestFramework.Extentions

Onları sildim ve referans ekledim:

Microsoft.VisualStudio.QualityTools.UnitTestFramework

Ve sonra tüm testler göründü ve eskisi gibi çalışmaya başladı.

Daha önce yukarıdaki diğer önerilerin hemen hemen hepsini denedim, ancak test DLL'lerine yeniden başvurmak iyi çalıştı. Bu cevabı benim durumumda olanlar için gönderdim.


1

Aynı sorunla karşı karşıyaydım, benim durumumda çözülmek için

  1. Windows konsolunu açtım (windows tuşu + cmd).
  2. Projenin oluşturulduğu klasöre gidin.
  3. "Dotnet test" komutunu uyguladığınız temelde visual studio'un yürüttüğü testin aynısıdır, ancak konsolu çalıştırdığınızda tam izlemeyi görmenizi sağlar.
  4. Bu hata iletisini aldım "TestClass özniteliği ortak olmayan sınıf MSTest.TestController.BaseTest üzerinde tanımlı"
  5. Bu yüzden test senaryosuna gittim ve herkese açık olarak işaretledim, tekrar derledim ve testlerim doğru bir şekilde görüntüleniyor

0

İlk başta, MSTest kullanmaya çalıştım. Bundan sonra onu Nunit testine değiştirdim. Sonra MSTest'i desteklemek istedim. Tüm nUnit kodlarını ve referanslarını kaldırdım ancak Test Gezgini MSTest yöntemlerini göstermedi. Çözüm: Tüm ilk nuget referanslarını kaldırdım ve yeniden yükledim. Bitti.


0

Benim için, test projesinin .csprojdosyasındaki TargetFramework öğesini

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

için

  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>

çalıştı.


0

Benim durumumda, proje tipi statik kitaplığa (lib) ayarlanmıştı ve dinamik bir kitaplık (dll) olmalı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.