Test yöntemi sonuçsuz: Test çalıştırılmadı. Hata?


172

Bir test sınıfım var ve aşağıda test sınıfından bir örnek test gönderdim

namespace AdminPortal.Tests.Controller_Test.Customer
{
    [TestClass]
    public class BusinessUnitControllerTests
    {
        private IBusinessUnitRepository _mockBusinessUnitRepository;
        private BusinessUnitController _controller;

        [TestInitialize]
        public void TestInitialize()
        {
            _mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>();
            _controller = new BusinessUnitController(_mockBusinessUnitRepository);
        }

        [TestCleanup]
        public void TestCleanup()
        {
            _mockBusinessUnitRepository = null;

            _controller.Dispose();
            _controller = null;

        }

        #region Index Action Tests
        [TestMethod]
        public void Index_Action_Calls_GetAllBusinessUnit()
        {
            _mockBusinessUnitRepository.Stub(x => x.GetAllBusinessUnit());

            _controller.Index();

            _mockBusinessUnitRepository.AssertWasCalled(x=>x.GetAllBusinessUnit());
        }
    }
}

Projeyi çalıştırdığımda aşağıdaki ekranı alıyorum resim açıklamasını buraya girin

Referansları kontrol ettim ve test projesinin ana projeye referansı var. Testin neden çalışmadığına veya sonuçlarının kesin olmadığını söylediğine dair bir fikrin var mı?

Düzenleme 1:

Burada bir yazı gördüm ve testimin ayarının varsayılan işlemci mimarisini X64 olarak değiştirdim, ancak hala çalışmıyor.


3
ReSharper'da bilinen bir sorun. Burada bazı potansiyel çözümler var: stackoverflow.com/questions/12191352/… .
Chris Mantle

3
Temiz ve yeniden inşa ettiniz mi? VS2010'da, güncelledikten ve yeniden oluşturduktan sonra derleme referanslarını kaybetme konusunda bazı tuhaflıklar olduğunu hatırlıyorum.
Mark Walsh

@ChrisMantle Kontrol ettim ve varsayılan işlemci mimarimi değiştirdim, ancak hala çalışmıyor
Cybercop

@MarkWalsh VS2012 kullanıyorum. Söylediğiniz gibi çözümü hala temizledim ve yeniden oluşturdum, ancak yine de çalışmıyor
Cybercop

9
bu soru meta
gnat

Yanıtlar:


133

Yukarıdaki seçeneklerden hiçbirinin işe yaramadığı durumlarda, test projesinde eksik bir nuget paketi nedeniyle App.Config dosyamda bozuk bir giriş fark ederek bu hatayı örneğimi düzelttim.


5
Burada da aynı sorun var. R # hatayı (yapılandırma sistemini başlatırken hata) şişirirse iyi olurdu, bu yüzden testlerin neden çalıştırılmadığı açık olurdu.
Geoffrey Hudik

5
Teşekkürler, benim için, ayarları yanlışlıkla konfigürasyonların üstüne koydum, uygun bir konuma getirdim ve işe yarıyor.
anIBMer

3
Ben nuget üzerinden specflow ekledim ve App.config içine bir girdi ekledi. Bu tüm sıkıntıyı yarattı. Yeni bir App.config oluşturdum ve referansı tekrar ekledim ve düzeltildi. Bilgi için teşekkürler.
Vine

Bu yazı başlangıçtan yaklaşık iki yıl sonra, bu hala geçerli bir düzeltme gibi görünüyor (VS 2015 ve ReSharper 9.2 kullanıyorum).
Steven D.

2
Bingo! Teşekkürler Chris. Benim durumumda bir maching bölüm adı olmadan log4net bölümü oldu <configSections>.
datps

47

Benim için oldukça sinir bozucuydu, ama en azından davam için çözüm buldum:

TestMethod'unuz zaman uyumsuzsa, geçersiz olamaz. Görevi döndürmelidir ZORUNLU.

Umarım birine yardımcı olur :)


37

Resharper ile aynı sorunu yaşadım ve bir seçeneği değiştirerek bu hatayı düzelttim:

Yeniden Paylaşıcı => Seçenekler => Araçlar => Birim Testi

"Test edilmekte olan gölge kopya montajları" seçeneğinin işaretini kaldırmak zorunda kaldım


2
Bu, diğer düzeltmeleri yükledikten sonra benim için sıraladı. VS 2013 ve R # v8.1 kullanıyorum
Spikeh

10
Benim için çalışmadı, Reshaper 10 ile VS2015 kullanıyorum
Nemeas

Bu benim için bir NETCore test projesinde VS2017 ve Resharper Ultimate 2017.2.2 ile çalışmamı sağladı.
Tasker

Benim için çalıştı ve şimdi testler için derleme temizlemek zorunda değilim. Teşekkürler Elias.
PhoenixPan

22

Bir Resharper sorunuydu. Yeniden Paylaşım seçeneklerinde-> Araçlar-> MSTEST'te, Eski Runner Kullan onay kutusunun işaretini kaldırdım ve şimdi çalışıyor.


61
Araçlar-> Birim Testi-> MsTest altında bu seçeneğim yok. (
Yeniden paylaşıcı

Ayrıca R # 2017.2'de böyle bir seçeneğim yok.
realsonic

Benim için bu seçenek Araçlar-> Birim Testi-> MsTest öğesinin altında kaldı ve işaret kaldırıldı.
Marcel

15

Bu sorunu yaşıyordum ve buradaki sorunla aynı olduğu ortaya çıktı . Bu cevap benim için problemi çözdü .

  1. "Çalıştır'da yalnızca başlangıç ​​projeleri ve bağımlılıkları oluştur" seçeneğinin işaretini kaldırın (Seçenekler -> Projeler ve Çözümler -> Oluştur ve Çalıştır)
  2. Configuration Manager'da, hem başlangıç ​​projesinin hem de Test projesinin "Derleme" seçeneğinin işaretli olduğundan emin olun.

Bu konuyu ikinci kez vurduğumda, testlerin bulunduğu projenin dosya yolundaki bir ve işareti vardı. ReSharper'ın test çalıştırıcısı ile iyi çalışır, ancak dotCover'ın değil. Ve işareti dosyayolundan kaldırın.

Bu, dotCover ile onaylanmış bir hatadır .


1
Benim için çalıştı. ReSharper ile VS2017 2017.1.3 :-)
Lars Holdgaard

12

Benim için, çözümü temizlemek ve yeniden inşa etmek sorunu çözdü.


Git'te şubeyi değiştirirken (yanlışlıkla) proje dosyasındaki değişiklikleri geri almıştım. Sınıfa sağ tıklatarak testi çalıştırmayı denediğimde (kod penceresi hala açıktı) çözümün bir parçası olmadığı için çalışmadı.
Aralık'ta ipotek

12

Benim için sorun, bozuk bir NUnit / ReSharper ayarları XML dosyasıydı (beklenmeyen bir güç kesintisi nedeniyle).

Hatayı tanımlamak için bu komutla Visual Studio'yu başlattım :

devenv.exe /ReSharper.LogFile C:\temp\resharper.log /ReSharper.LogLevel Verbose

Dosya incelendiğinde şu istisna ortaya çıktı:

09:45:31.894 |W| UnitTestLaunch                | System.ApplicationException: Error loading settings file
System.ApplicationException: Error loading settings file ---> System.Xml.XmlException: Root element is missing.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.Load(String filename)
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   --- End of inner exception stack trace ---
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   at NUnit.Engine.Services.SettingsService.StartService()
   at NUnit.Engine.Services.ServiceManager.StartServices()
   at NUnit.Engine.TestEngine.Initialize()
   at NUnit.Engine.TestEngine.GetRunner(TestPackage package)
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0()
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action)

Bunun test projesinin app.config DEĞİLDİR !

Bir hızlı googling etrafında suçlu olarak aşağıdaki dosyayı tespit:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

Var, ama boştu. Bunu silmek ve Visual Studio'yu yeniden başlatmak sorunu çözdü.

(Visual Studio Professional 2017 v15.3.5 ve ReSharper 2017.2.1 kullanılarak).


12

Bu sorunla Resharper Ultimate 2017.2 2017 vs 3 güncellemesinde karşılaştım.

Yeniden başlatma veya makineyi yeniden başlatma yardımcı olamaz.

Önbelleği aşağıdaki gibi temizleyerek sorunu çözdüm:

    Resharper ->options-> Environment ->click the button 'Clear caches'

Güncelleme:

Test penceresinin sağ üst köşesinde bir düğme "hatası" (Resharper 2018'de buldum) var.

Hata düğmesine tıklarsanız, sorunun çözülmesine yardımcı olabilecek bir hata mesajı gösterilir.

Sorunun kökünü izlemek için, Visual Studio'yu günlük modunda çalıştırın. 2017'ye karşı, Şu komutu çalıştırın:

      devenv /ReSharper.LogFile C:\temp\log\test_log.txt /ReSharper.LogLevel Verbose

Testi çalıştırın.

Test_log.txt günlük dosyasını inceleyin ve dosyada 'hata' arayın.

Günlük dosyası, çözebileceğiniz hatayı bulmak için harika bir yardımcıdır veya günlük dosyasıyla ilgili sorunu Resharper teknik destek ekibine gönderebilirsiniz .


7

Bu sorunu da çözdüm. Ancak, bu konudaki çözümlerin hiçbiri işe yaramadı. İşte yaptığım şey ...

R #, şeylerin neden başarısız olduğu hakkında herhangi bir ayrıntı vermediğinden, yerleşik VS2013 test çalıştırıcısını denemeye karar verdim. Testlerin hiçbirinin yapılmadığı aynı davranışla karşılaştı. Ancak, Çıktı penceresine baktığımda sonunda bir hata mesajı aldım:

Yürütücü 'executor: // mstestadapter / v1' çağrılırken kural dışı durum oluştu: Nesne başvurusu bir nesnenin örneğine ayarlanmadı.

Bu beni SO başka bir iş parçacığına götürdü bir çözüm ile . İnan bana, ASLA sorunun ne olduğunu tahmin edemezdim.

Son zamanlarda bir NuGet paketi oluştururken AssemblyInfo.cs dosyasında birkaç değişiklik yapmıştım. "En" bir montaj kültürü değerinin belirtilmesi de dahil olmak üzere değişikliklerden biri.

Bunu değiştirdim:

[assembly: AssemblyCulture("")] 

buna:

[assembly: AssemblyCulture("en")]`. 

Hepsi bu kadar! Ünite testlerimi açıklanamaz bir şekilde kırdı. Yine de nedenini anlamıyorum. Ama en azından işler tekrar çalışıyor. Bu değişikliği geri aldıktan sonra (yani kültürü tekrar "" olarak ayarladıktan), testlerim tekrar çalışmaya başladı.

Umarım orada birine yardım eder.


1
Montaj kültürünü değiştirdim ve R # testleri çalıştırmayı durdurdu.
Valentine Zakharenko

teşekkür ederim! çıkış penceresini kontrol benim sorunum reveled, sınıf kamu değildi!
Jony Feldman

7

Benim durumumda [Test]yöntemler sadece private. Utanç


1
Garip, ReSharper bana [Test] yöntemlerinin özel olduğu yerde şikayet etti. Yeni bir özellik olmalı.
Kevin B Burns

7

Benim sorunum sadece NUnit nuget ile yüklü olmasıydı. Ayrıca gerekli olan NUnit3TestAdapter yüklememiştim.

Install-Package NUnit3TestAdapter

Bu, asıl sorun hakkında size biraz ipucu veren sinir bozucu sorunlardan biridir!
Ben Power

6

Benim durumumda ben app.config connectionstring kopyalarken yaptığım bir hataydı .. Ben configSections etiketi içine koymuştu!

Bunu fark etmem için biraz zaman aldım ... teşekkürler VS intellisense olsa .. ya da yeniden canlandı mı?


benim durumumda, yapılandırma dosyasındaki geçersiz değişiklikten kaynaklandı
evgenyl

Sorunum,
Gittiğim

Hemen hemen aynı şey oldu, gereksiz appSettings bölümünü kaldırdığımda ve bağlantı dizesini çalıştığı orijinal appSettings'e taşıdığımda, yedek appSettings bölümüne bir bağlantı dizesi ekledim.
Sirar Salih

Bozuk app.config ile ilgili cevap ilk olanla aynı. Stackoverflow.com/a/21386881/52277
Michael Freidgeim

5

Benzer bir sorunum vardı. VS 2010, c # CLR 2 Nunit 2.5.7, sadece VS'den> temiz çözüm bu sorunun çözülmesine yardımcı oldu


5

Benim durumumda dönen bir asenkron test yöntemi oluşturdum void. TaskBunun yerine geri dönmek voidsorunu çözdü.


4

Son zamanlarda herhangi bir DLL bağımlılığı eklediniz mi? ... benim gibi

Sadece aynı sorunla karşılaştım ve test çıkış penceresinde veya başka bir yerde herhangi bir ipucu almamak çok üzücü oldu.

Sebep son derece aptalca oldu: Ben sadece bir alt projede ek bir harici DLL bağımlılık önceki gün ekledi ve ana proje App gerçekten inşa ve değişiklikten sonra doğru koştu. Ama benim birim testleri ana app bir kardeş projede, ve bu yüzden DLL çağrıldığı bu değiştirilmiş alt proje çok bağımlılık vardı ... henüz, test projesinin çalışma zamanı konumu ana App değil! Bu nedenle, derlemeyi eksik DLL'nin test çalışma zamanı dizinine kopyalamak için değiştirmek sorunu çözdü.


4

VS2013, ReSharper ve Moq MSpec uzantısı ile ReSharper 9.1 kullanıyorum. Aynı "sonuçsuz" hatayla karşılaştım.

Moq'lardan birinin Moq'tan başlatılmadığı, sadece beyan edildiği ortaya çıktı. Başlatan bütün testler tekrar yapıldı.


4

Benim durumumda UnitTests projesinin derlemesinin kapatıldığı 'Release' modu nedeniyle bu hatayı aldım. 'Hata ayıklama' moduna geri dönmek sorunu çözdü.

ReTharper'ın UnitTests kütüphanesini hiç bulamaması durumunda hiçbir şey söyleyememesi gerçekten şaşırtıcıdır. Cidden, bu bir utanç;)

Umarım birine yardım eder


4

Benim durumumda, bir çözüm içindeki bazı test projelerindeki tüm testler , yeni projeler ekledikten sonra çalışmaya başlamamıştı. VS 2017'yi ReSharper 2017.1.2 ile kullanma burada.

Her şeyden önce, sorununuzun ReSharper ile ilgili olduğunu varsayarak zaman kaybetmediğinizden emin olun. Birim Test Gezgini dahil birim test özelliklerini kullanırsanız ReSharper ile ilgili bir sorun olduğunu varsaymak kolaydır . Visual Studio'nun Test Gezgini'ni Sınama menüsü altında açın ve Tümünü Çalıştır'ı deneyin . "Bunu yapmanın ek avantajı, çıkış penceresinin sizi doğru yönde gösterebilecek bir hata iletisi göstermesidir. çalıştırılmazsa, sorunun ReSharper'da değil Visual Studio'da olduğunu varsaymak güvenlidir.

Ben silme ve birini yeniden eklenmesini sona erdi Aktif çözüm platformu , herhangi bir CPU içinde, Configuration Manager . Bunu yaparak, değişikliklerimi kaydettikten ve çözümü yeniden açtıktan sonra, tüm testler tekrar çalışmaya başladı.

Yeni projeler eklediğimde ve platformlardan birini yeniden oluşturarak çözüm dosyasında beklenmedik bir yapılandırma girişi olduğuna inanıyorum. Farklılığı denedim ama soruna neden olan şeyi değiştirmek zor oldu.


Benim durumumda, app.config dosyasında <AppSettings> yerine aptal bir yazım hatası vardı. ReSharper'ı seviyorum, ancak GERÇEKTEN hata mesajlarında çalışmaları gerekiyor!
MichaelMilom

4

Bu sorunu yaşayanlar için test projem .NET Core 2.0için Visual Studio 2017 Community (v15.3 3). Ayrıca bu hatayı kullanarak vardı JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346- ben bir hata gönderdi.

JetBrains, yeniden üretmek için sıfırdan yeni bir test projesi oluşturmayı tavsiye etti. Bunu yaptığımda ve testler tamamlandığında, soruna neden olan nedeni buldum:

  • Bunu *.csprojdosyanızdan kaldırın :
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}"

Bunu yaptığımda - testler iyi çalışmaya başladı.


Dmitry, teşekkür ederim, bana yardımcı oldu. Bu hizmetin ne olduğunu açıklayabilir misiniz?
Vladimir Melekh

@VladimirMelekh bu github.com/Microsoft/vstest/issues/472 kontrol
Dmitry Pavlov

3

VS2010, NUnit 2.6.3 kullanıyorum (dahili olarak ReSharper 2.6.2 kullandığını söylüyor olsa da), ReSharper 7.7.1 & NCrunch 2.5.0.12 ve aynı "... test sonuçsuz ..." ama NCrunch her şeyin yolunda olduğunu söyledi. NUnit ve NCrunch'ın çoğu için, hangi testlerin mutlu olduğunu ve hangilerinin yeniden düzenlenmesi gerektiğini kabul eden senkronizasyondaydı, o zaman hala anlamadığım bir şey oldu ve NCrunch bir süre başarısız testler yaptığımı söyledi (ancak bunlardan adım atmak onları gösterdi sonra) hepsinin çalışmaya karar verdiler ve NUnit aynı teste sahip biri dışında tüm testlerimden şikayet etmeye başladı "..test sonuçsuz ..." ki yine de NUnit devam etse bile bir geçiş adımına geçebildim "sonuçsuz" olarak göstermek için).

Yukarıdaki önerilerin birçoğunu boşuna denedim ve sonunda VS2010'u kapattım ve çözümü yeniden açtım. Voila, şimdi tüm testlerim tekrar mutlu ve NCrunch & NUnit aynı sonuçları tekrar bildiriyor. Ne yazık ki, senkronizasyondan çıkmalarına neden olmak için neyin değiştiğine dair hiçbir fikrim yok, ancak VS2010'u kapatmak ve yeniden açmak bunu düzeltmiş gibi görünüyor.

Belki başka biri bununla karşılaşacak ve bu basit (gerçek sonuç ne olduğunu bilmediğiniz için sonuçta tatmin edici değilse) çözümünü kullanabilecektir.


3

Aynı sorunu yaşadım. Suçlu, proje oluşturma ayarlarımla uyumlu olmayan harici bir referanstı. Çözmek için, herhangi bir CPU'dan x86'ya proje-> özellikler-> yapı-> Platform Hedefi-> değişikliğine sağ tıkladım.

Birlikte çalıştığım belirli * .dll System.Data.SQLite oldu. Bu belirli * .dll 32 bit işlem için sabit kodlanmıştır. "Herhangi bir CPU" ayarı 64 bit olarak yüklemeyi denedi.


Platform hedefi uyuşmazlığı aynı çözüm içindeki diğer projelere yapılan referanslarla da olabilir.
Chaquotay

3

Çözümüm:

NUnit 3.2.0'ın Resharper ile ilgili bazı sorunları var - 2.6.4'e düşürün:

update-package nunit -version 2.6.4

3

Benim durumumda test yöntemim özeldi ve bunu herkese açık olarak değiştirdim ve işe yaradı.


3

App.Config dosyası eksik (bozuk değil) nedeniyle. Yeni (Ekle -> Yeni Öğe ... -> Uygulama Yapılandırma Dosyası) eklemek sorunu çözdü.


3

Aynı sorunu yaşadım. NUnit 3.5 ve Resharper 9.2 arasındaki uyumluluk sürümü ile ilgiliydi, çünkü NUnit 3.5'ten 2.6.4'e düşürülerek çözüldü. Benim için çalıştı. iyi şanslar.


3.6.1'e karşı derlenmiş bir Test derlemem vardı ve ana Test derlemem 3.7.1'e göre derlendi. 3.6.1'e düşürüldü ve şimdi hepsi iyi.
Tom

ReSharper 2017.3.2 ve NUnit 3.11 için durum böyleydi. Nunit için yoruma bakın github.com/nunit/nunit/issues/3086#issuecomment-466988760
Puterdo Borato

3

Kullanıyorsanız xUnit, yükleme xunit.running.visualstudiopaketini çözdüm. (şu anda xUnit 2.3.1ve kullanıyor VS17 Enterprise 15.3.5)


3

NUnit framework kullanarak herhangi bir test çalıştırmak için aynı sorunu yaşıyordum. "Sonuçsuz: Test çalışmıyor" Visual Studio 2017 15.5.6

ReSharper Ultimate 2017.3.3 Yapı 111.0.20180302.65130

ÇÖZÜLDÜ Microsoft.NET.Test.Sdk'ye proje bağımlılığı ekleme


Benim durumumda yardımcı olmadı
Dmitry Avtonomov

2

Testin yürütülmesi için acele edenler için, testleri çalıştırmak için VS 2017 test kaşifini kullanmak zorunda kaldım;

resim açıklamasını buraya girin

resim açıklamasını buraya girin


2

Bu hata, Visual Studio 2017 ve yeniden paylaşım 2018.2.3 sürümünde oluştu, ancak bu düzeltme Visual Studio 2019 sürümleri için geçerlidir.

Testlerin Resharper'da çalışmasını sağlayan düzeltme, yazma sırasında Resharper'ın (2019.2.1) en son sürümüne güncelleme yapmaktı.


1

Aynı sorunu yaşadım ve hiçbir şey yardımcı olmadı.

sonunda birim projenin ve birim test projesinin isim alanlarında uyumsuzluğum olduğunu gördüm.

Birim projemin ad alanı unit.project ve test projesi unit.project.tests olarak adlandırıldı, ancak testin varsayılan ad alanı birim ile aynı, her ikisi de unit.project idi.

Ad alanlarını farklı olacak şekilde güncelledikten sonra (her proje için bir ad alanı) her şey işe yaradı!


Evet, ben de aynı sorunu yaşadım. Fikir, testler projesini ve hedef projeyi erişim kolaylığı için aynı hale getirmek olabilir, ancak test çalıştırıcısına vidalanır ve bu sorunu OP'den üretir.
16:15 atconway
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.