Test Gezgini'nde çalışmayan testler


147

Şu anda 32 Unittest'e sahip bir çözüm üzerinde çalışıyorum. İyi çalışan resharper test çalıştırıcısı ile çalışıyorum. Tüm testler çalışıyor, tüm testler doğru test sonucunu gösteriyor. Şimdi bir iş arkadaşım, testlerin kendi makinesinde Visual Studio test gezgini kullanılarak çalışmadığını söyledi. Benim makinemde de çalışmıyorlar, bu yüzden bazı yerel eksik dosyaları veya bir şeyi hariç tutabilirim.

Test Gezgini tüm birim testlerini gösteriyor, ancak "Tümünü Çalıştır" seçeneğine tıklandığında, tüm testler grileşiyor ve test çalıştırmasının hiçbir sonucunu göstermiyor:

görüntü açıklamasını buraya girin

  • Tüm test sınıfları halka açıktır
  • Tüm test sınıfları belirtilen [TestClass]özniteliğe sahiptir
  • Tüm test yöntemleri [TestMethod]özniteliği kullanıyor
  • Hem üretkenlik kodu hem de test projeleri .NET 3.5'i hedefliyor.
  • Zaten temiz yapı benim çözüm çalıştı, ve / veya tümünü silmek var obj, bin, Debugve Releaseklasörleri

Böyle bir davranışa neden olabilecek her türlü ipucunu takdir ediyorum.


3
ReSharper'ınızı güncelleyin. Bu stackoverflow.com/questions/16011775/…
kmhigashioka

18
VS'nin neden bir test yapılmadığını söylemesi harika olmaz mıydı ? Eşleşmeyen hedef platform, eksik test adaptörü, ... :(
Bernhard Hofmann

1
ReSharper'ı kullandıkları nerede belirtilir?
Alex 75

6
@BernhardHofmann Şu anda bunun gibi bir sorunla karşılaştım ve VS'nin Output> Tests'de bazı hata mesajları verdiği ortaya çıktı. Önemli. VS'nin onları daha görünür hale getirmemesi sinir bozucu, ancak böyle bir durumda bakılması gereken bir yer.
JLRishe

2
Hepiniz bu özellik talebini yükseltmek ilginizi çekebilir: developercommunity.visualstudio.com/idea/947742/…
Kyle Delaney

Yanıtlar:


159

Projelerinizin tamamı AnyCpu değilse, aşağıdaki 2 ayarın eşleşip eşleşmediğini de kontrol etmek isteyebilirsiniz:

  1. [Test projesine sağ tıklayın] -> özellikler -> Oluştur -> Platform hedefi - ör. X64

  2. [Ana Menü] -> Test -> Test Ayarları -> Varsayılan İşlemci Mimarisi -> X64

Bunlar eşleşmediğinde test projemin sessizce çalışmayacağını öğrendim.


6
bu yanıt "tekrar aç ve kapat" ile boyun-boyun şeklindedir, bu nedenle, bu sizin için uygunsa, lütfen olumlu oy verin.
lukkea

bu benim sorunlarımı çözdü (karma platformlardan herhangi bir CPU'ya geçiş)
Marcel Studer

1
test projelerinizin netstandard2.0 değil netcoreapp2.2 olduğundan emin olun
user2033412

4
Çalışmış. Gerçekten VS'de olsam, bize açık bir uyarı veya hata mesajı veya başka bir şey veririm.
anon

9
VS2019 sürümü: Ana Menü -> Test -> AnyCPU Projeleri için İşlemci Mimarisi -> X64.
StackOverthrow

65

VS 2017'de de aynı sorunu yaşadım. Benim durumumda VS'yi yeniden başlatarak çözüldü.


7
Bu olumsuz oyu neden verdiğime dair önceki yorumum silindi, bu yüzden biraz daha net olacağım. Bu, sorun için bir çözüm değildir; temeldeki sorunu çözmeyen çok geçici bir düzeltmedir. SO'nun insanlara "kapatıp tekrar aç" demesi gereken bir yer olması gerektiğini düşünmüyorum, bu siz buraya gelmeden önce öğrenilmesi gereken bilgidir. Çözüm için lütfen Joseph Simpson yanıtına bakın.
lukkea

5
@lukkea Joseph Simpson'ın cevabını takip ettim ve onayladığım tüm projelerim AnyCpu'nun olduğu yerde. Hala burada açıklanan sorunu yaşadım. Benim için VS'nin yeniden başlatılması yardımcı oldu. Bu, VS2012'de ilk kez bu tür aksaklıklar yaşanmıyor (ve sadece benim makinemde değil). Bunun iyi bir çözüm olmadığı konusunda size katılıyorum, ancak projede yanlış bir şey yoksa, tek yardım bu olabilir. Yine de, bir yeniden inşayı temizlemenin de yardımcı olup olmadığını kontrol etmelisiniz.
Sascha

2
Keşke 'tekrar açıp kapatmak' tüm sorunlarımı düzeltirse. Hala kaç tanesini düzelttiği şaşırtıcı. Bunu yapmamın hatırlatılması için stackoverflow'a gitmem biraz utanç verici, ancak bu yanıtı yararlı buldum.
Richard Garside

2
@lukka bazen görsel stüdyo altta yatan problemdir ve yeniden başlatmak çözümdür
JSON

1
Hala VS2019 için çalışıyor ....
Tronald

46

MSTest yerine NUnit kullanıyorsanız , Visual Studio 2012/2013 için NUnit Test Bağdaştırıcısı Uzantısına ihtiyacınız olacaktır .


9
Bu, "NUnit 3 Test Adapter" ı
Westerlund.io

11
VS 2019'da bağdaştırıcıyı paket yöneticisinden kurmak için çalıştı nuget.org/packages/NUnit3TestAdapter
maylon

Bu sayfaya göre ayrıca Microsoft.NET.Test.SdkNuget
BlueRaja - Danny Pflughoeft'ten

VS 2017'de Extension Nunit 3 Test Adapter'ı kurdum ve işe yaradı.
Bob Lokerse

1
VS 2019'da Extension Nunit 3 Test Adapter'ı da kurdum ve işe yaradı. Bir not: Visual Studio'yu da güncellemem gerekiyordu.
Bob Lokerse

43

Void yerine Task döndürmek için zaman uyumsuz test yöntemlerimi değiştirmem gerekti.

Testler daha sonra etkindi ve Test Gezgini'nde çalıştırılabilir hale geldi.


1
Zaman uyumsuz void yönteminin bitmesini beklemenin bir yolu yoktur. Eşzamansız boşluk "ateş et ve unut" dur. Bu yüzden test edilemezler.
Ketobomb

Bunu okuduğumda yaptığım yüz germe ülke üzerinde yankılandı ... Aptallığımı belirttiğin için teşekkürler. Bu benim için çalıştı. Olumlu oy verildi
JP Chapleau

"Hayır" kategorisine girmesine rağmen. Geri dönüş türünüzün Görev olması gerektiği, ancak unutulması kolay olduğu (çünkü görünüşte dünyadaki başka hiçbir birim testi geçersizlikten başka bir şey döndürmediği için) ve sizi ünitenizi tamir etmenin tavşan deliğine göndermediği için bunun daha fazla oy almasını diliyorum. gerçek yapılandırma sorunu olmadığında yapılandırmayı test edin. Gerçekten bunun bir derleyiciye neden olmasını veya en azından bir çalışma zamanı hatası vermesini diliyorum.
pat8719

2
@ pat8719, bir kod analizörü için iyi bir fikir gibi geliyor. Yazmak çok zor değil. Az önce bir xunit gerçeğini yazdım async void Foo()ve analizörleri şikayet etmedi, ama kesinlikle ekleyecek bir tane ekleyebilirler. cc: @bradwilson
benmccallum

22

Testlerin hangi çerçeveye karşı yazıldığını kontrol edin (örn. Nunit, xunit, VS test, vb.) Ve doğru test adaptörünün / çalıştırıcı uzantısının kurulu olduğundan emin olun.

Benim için eksik olan NUnit 3 Test Bağdaştırıcısıydı ve nunit.framework bağımlılık sürümüne bakarak gereken sürüm numarasını doğruladım (Solution Explorer'da Bağımlılıklar ağacında .dll'yi seçin ve Özellikler penceresini açmak için F4'e basın).


2
Kendime not: Orijinal MSTest projem ref'd Microsoft.VisualStudio.QualityTools.UnitTestFramework(hangi sürümün olduğundan emin değil). Yöntemin bu ref kaldırılarak ve en son (v2.1.0) MSTest.TestAdapter (ve Framework) yüklenerek çalışmadığı (veya bulunamadığı) sorunlar çözüldü
Adam Cox

@AdamCox Microsoft.VisualStudio.TestTools.UnitTestingkullanımdan kaldırıldı mı? Bunu kullanarak, bağlı oldukları bir projeye bazı referansları yeniden ekledikten sonra yukarıdaki gibi çalışmayı aniden bırakan bazı testler yaptım.
ebyrob

@ebyrob, Athanasios'un aşağıdaki cevabı alakalı olabilir. Görünüşe göre sadece MSTest. * Paketlerini yükseltmek / yükseltmek zorunda değil, aynı zamanda bazı bağımlılıklar ekleyip bazı bağlama yönlendirmelerini düzeltmek zorunda kaldı. Uyarı çıktınızı kontrol edin.
benmccallum

16

TLDR: Test paketlerini güncelleyin, çıktıya bakın -> test konsolu

Bununla bir buçuk gün uğraştım. işte bunu çözmek için yaptığım şey:

belirtiler

  1. 5 Birim test projesi, tümü TestExplorer'da keşfedilebilir
  2. Her 5 kişiden 2'si düzgün bir şekilde yürütüldü
  3. 3 hiç çalışmadığını belirten
  4. Sorun .net çerçeve güncellemesinden sonra başladı

soruşturma

.Net framework güncellemesi sırasında tüm paketler güncellendiği için çalışılan ve çalışmayan projeler arasındaki farklarla başladım. İlk ipucu, 3 projenin de kullandığıydı: MSTest.TestAdapter ve MSTest.TestFramework

> - Doğal Gittiğim Çıktı konsolu > - Testi açılır içinde VS 2019 ve çıkışta görünüyordu. Orada işe yarayacak bir şey yok.

Çözümün birinci adımı : MSTest.TestAdapter ve MSTest.TestFramework'ü 2.0.0 sürümüne güncelleyin

Çözümün ikinci adımı : Şimdi Çıktı konsolu -> Test açılır çıktısı birbiri ardına gösterilmeye başladı, eksik paketler ve yanlış bağlama yönlendirmeleri

Çözümün üçüncü adımı : Eksik paketleri manuel olarak ekleyin. Benim için bunlar

  1. System.Runtime.Extentions
  2. System.Reflection
  3. Belki biraz daha özlediğimden

Çözümün 4. adımı : Gereksiz bağlama yönlendirmeleri kaldırıldı / düzeltildi.

Umarım bu başka birine yardımcı olur.


O gün beni kurtardın! 4.5 FW sürüm projesini yükselttim ve tüm gereksiz şeyleri paketlerden kaldırmaya çalıştım ve bu duruma düştüm. Teşekkürler!
Numan

Sanırım benzer bir şey yaşıyordum. Sonunda projeyi sıfırdan yeniden yarattım. Görünüşe göre * .csproj dosyasında ToolsVersionbenimkini ayarlayan ve çarpan bir satır var her şeyi mahvetti. Söyleyebileceğim tek şey, MS birim testi için "alıcı dikkat edin" ve * .csproj dosyalarınızı bir an önce değiştirmeye hazır olmanızdır, bu şeyler sıkı bir şekilde entegre edilmiştir ve çok sürüme bağlıdır.
ebyrob

Teşekkürler, doğrudan benim sorunum olmasa da, konsol çıktısını kontrol etme ipucu bana testlerimin çalışmasını engelleyen hatayı gösterdi (DBContext Dispose yönteminde bir hata vardı).
Iain Carlin


11

Bu sorunu yaşadım ve benim için bunun nedeni şunların farklı sürümlerine sahip birden çok Test Projesine sahip olmasından kaynaklanıyordu:

  • MSTest.TestAdapter
  • MSTest.TestFramework

Projeler için nuget paketlerini aynı olacak şekilde birleştirmek sorunu benim için çözdü.


1
Bu cevap benzer bir neden bulmama yardımcı oldu. Benim durumumda bazı test projelerinin Microsoft.VisualStudio.TestPlatform.TestFramework referansları vardı (ve çalışmadı), diğerleri ise Microsoft.VisualStudio.QualaityTools.UnitTestFramework (çalışacak projelerdi) referanslarına sahipti.
jr

11

VS 2019'un temiz kurulumundan sonra aynı sorun yaşandı. Testler bulundu ancak "Beklenmeyen hata oluştu" ile çalıştırılmadı. Varsayılan olarak seçilen x86 yerine x64'ün ayarlanmasıyla düzeltildi.

görüntü açıklamasını buraya girin


4
Bu, VS'yi yeniden başlatmak ve .vs klasörünü silmekle birlikte benim için düzeltmeydi. Teşekkür ederim.
Donald. Kayıt

Bunun hala bir sorun olduğuna inanamıyorum ... Umarım, Microsoft bir noktada bu klasik engel için bir tür uyarı verir.
Guillaume LaHaye

10

Projede Microsoft.VisualStudio.QualityTools.UnitTestFramework derlemesine başvurmadığını buldum . Bunun yerine, Microsoft.VisualStudio.TestPlatform.TestFramework ve Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions referans veriyordu . Bu iki referansı kaldırıp Microsoft.VisualStudio.QualityTools.UnitTestFramework derlemesine başvuruyu eklediğimde, daha önce mavi ünlem işaretiyle işaretlenen testler aniden aktif hale geldi ve çalışmaya başladı.

Birim testleri yanlış montajla çalışmıyor

Doğru montaj ile testler çalışır


3
.NET Framework 4.6.2'den .NET Framework 4.7.2'ye geçtikten sonra testlerim artık çalışmıyordu. Saatler süren denemelerden sonra, sadece bu çözüm benim için çalıştı.
Éric Bergeron

.NET Framework 4.6.2'den .NET Framework
4.7.2'ye geçtikten

8

Benim durumumda, çözümümdeki bir test projesinin MSTest.TestFramework ve MSTest.TestAdapter nuget paketlerinin yüklü olması, ancak diğerlerinin kurulu olmamasıydı. Görünüşe göre bu paketlerin, çözümdeki bir proje kurulana kadar testleri çalıştırmaları gerekmiyordu.

Sorun, bu paketlerin eksik olan test projelerine yüklenmesiyle düzeltildi.


Benim durumumda tam tersi: MSTest nuget paketlerine sahip herhangi bir birim test projesi, diğerleri gibi çalışmayacaktır. Garip.
Palle Due

Çözüldü : Bir .testsettings dosyam var. MSTest paketleri bir .runsettings dosyası gerektirir. Bu yüzden testler çalışmıyor.
Palle Due



6

görüntü açıklamasını buraya girin

Test Gezgini'nde AnyCPU Projeleri için İşlemci Mimarisi ayarlamak sorunumu çözdü! Yukarıdaki ekran görüntüsüne bakın.


Çok sağol! Bana yardımcı oldu =)
Alexander Brattsev

4

Benim durumumda bir async voidYöntem vardı ve değiştirdim async Task, bu yüzden test beklediğim gibi çalışıyor:

    [TestMethod]
    public async  void SendTest(){}

ile değiştirin :

    [TestMethod]
    public async  Task SendTest(){}

1
Bu benim sorunumdu
Kyle Delaney

3

Aynı semptomlarım vardı.

Lütfen Araçlar - Uzantılar ve Güncellemeler aracılığıyla doğru Visual Studio uzantısının yüklendiğinden emin olun. Benim durumumda, XUnit ve Specflow'u Online seçeneğinden kurmam gerekiyordu.

Ardından çözeltiyi temizleyin ve yeniden oluşturun.

Bu hala yardımcı olmazsa, geçici dizininizi temizleyin (Başlat menüsünde% temp% arayın ve Temp'deki tüm içeriği silin)

Ve sonunda nihayet sorunumu çözen Resharper'ı kaldırmayı deneyin.


4
Resharper kaldırılsın mı ?! Bunun bir çözüm olduğunu sanmıyorum ^^
Steve Rakebrandt

3

Çıktı panelini (görünüm -> çıktı) açıp "Çıktıyı göster" açılır menüsünden "testler" i seçerek test çalıştırıcınızın hata çıktısını görüntüleyebilirsiniz.

çıkışını göster


Ek olarak, Resharper'ı yüklediyseniz , bir test dosyası açabilir ve ek hata bilgisi almak için bir testin yanındaki test dairesinin üzerine gelebilirsiniz.

Yeniden paylaşım çıkışı

Bunu tıklamak sizi daha detaylı bilgi içeren bir pencereye götürür. Alternatif olarak, Uzantılar -> Yeniden Şekillendirici -> Pencereler -> Birim Testi Keşif Sonuçları'na giderek bu pencereyi açabilirsiniz.

Yeniden Paylaşım Birimi Testi Keşfi


2

İşte test projesi inşa edilmek için işaretlenmedi:

Oluştur -> Yapılandırma Yöneticisi ... -> test projeniz için derlemeyi kontrol edin


2

Buraya bu tür bir hatayla geldiğimden beri problemimi / çözümümü gönderiyorum:

Semptomlar:

  • Tüm testler çalışmıyor, ancak proje başına bağlı olmadı, sadece bazıları uygulandı.
  • İdam edilenlerin hepsi yeşildi.
  • Teknoloji yığını: dotnet core / XUnit / FluentAssertions
  • Tüm testler algılanır ve değişirse güncellenir.
  • Seçilerek veya "Çalıştırılmamış testler" birkaç kez çalıştırılarak yürütülebilirler.

Sorun:

Kodda, başka bir iş parçacığının içine bir istisna atan bir hata vardı. Tüm test iddiaları geçti, ancak test yürütmesini iptal etti. Hatayı "Testler çıktısında" (NullException) görebiliyordum.


+1 Belirli bir testin hatalarını ayıklamaya çalıştım. Sonunda başka, daha basit bir test çalıştırdığımda, belirli testin hatalarını ayıklayabilirdim. Bu cevap bana bunu denememi sağladı.
Halvard

2

Aynı belirtilere sahipti, benim durumumda sorun olan nokta dotnet core SDK versiyonuydu .

Projeler 2.2'yi hedefliyordu ve 3.0 kullanarak inşa edebildi. En yeni 2.2 SDK sürümünü yükledikten sonra çalışabildiler.


2

Bu sorun, çalıştırılan test yöntemi bir StackOverflowException attığında da gözlemlenir ve test çalıştırıcısının test çalışmasını iptal ederek çıktıyla sonuçlanır 0 tests run.

Suçluyu bulmak ve her iki başında bir kesme noktası koymak çözmek için TestInitialize ve TestMethod , yöntemler dekore ayıklama modunda birim testi, özel durum dek (F10) üzerinden atlama işlemleri yapın.


2

Visual Studio 2019 Sürüm 16.4.6 ile birçok seçeneği denediniz ve Microsoft.VisualStudio.TestTools.UnitTestingşimdilik testleri başarıyla çalıştırmanın tek yolu konsoldaki bir sonraki komutu çağırmaktı

dotnet test

Testler Test Gezgini'nde keşfedilir ancak sonuç "Çalıştırılmadı" dır.

Visual Studio'yu güncellemek yardımcı olmadı.

Sonraki paketler için en son sürüme güncellemeler çalıştırarak "Verilen test senaryosu filtresiyle eşleşen test yok FullyQualifiedName" sorununu çözdünüz:

Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework

1

Benim için çözüm, Resharper Unit Testing ayarlarını "Varsayılan platform mimarisi" "x64" olarak değiştirmekti

görüntü açıklamasını buraya girin


Bu, Test Gezgini'nde testleri yürütmeyi reddeden bir .NET Core 3.1 projesiyle sorunumu çözdü. Bundan başka hiçbir şey düzeltemezdi.
J_L

1

VS2017'yi yeniden başlatmak benim için işe yaramadı. Sln'yi temizlemek zorunda kaldım, sonra çalışmayan ve yalnızca bu dosyayı çalıştırmayan testlerin olduğu bir dosya buldum. Ondan sonra hepsini çalıştırdım ve tekrar normal çalıştı.


1

NUnit (3.11.0) ve NunitTestAdapter (3.12.0) nuget paketlerinin farklı sürümlerine sahiptim. NUnit'i 3.12.0'a güncellediğimde, Visual Studio testleri çalıştırdı.


1

Benim durumumda MSTest nuget paketlerini güncellemek için çalıştı. Boş MSTest projesinde ve paketlerin güncellenmesi çalışsa bile bu sorunu yeniden oluşturabilir.


1

Benim için temel sınıfta TestContext adlı bir özelliğe sahip olmak bu davranışa neden oluyordu. Örneğin:

[TestClass]
public abstract class TestClassBase
{
    protected object TestContext { get; private set; }
}

[TestClass]
public class TestClass : TestClassBase
{
    // This method not found
    [TestMethod]
    public void TestCase() {}
}

1

Niteliklerinizden MSTest kullandığınızı söyleyebilirim. Benzer bir sorunla karşılaştım: testlerim Test Gezgini'nde görünüyordu, ancak onları çalıştırmayı denediğimde (Tümünü Çalıştır'ı seçerek veya tek tek seçerek) olmadılar.

Benim sorunum, birim test projesini boş bir .NET Standart Sınıf Kitaplığı projesinden manuel olarak oluşturmuş olmamdı. MSTest.TestFrameworkNuGet paketini kurdum , ancakMSTest.TestAdapter . Adaptör paketini kurar kurmaz beklendiği gibi çalıştılar.

Geriye dönüp bakıldığında açık görünüyor, ancak bir şablondan birim test projeleri oluşturduğunuzda, bunları kabul ettiğiniz için kabul edersiniz.


1

Bazen NUnit Test Adapter dosyalarının Windows 10'da C: \ Users [User] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dll kullanıcı klasöründe bozulduğunu belirtmek gerekir. Bu, Test Gezgini'nin olması gerektiği gibi çalışmamasına neden olur.


1

VS2019'u .Net 4.7 ile kullanıyorum. NUnit uzantısı v3'ü kurdum ve Test ayarlarını X64'ü kullanacak şekilde değiştirdim. Birim test projem Herhangi bir CPU'dur (x64 olarak değiştirirsem çalışır). Artık kodum aracılığıyla hata ayıklayabilirim.

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.