Metode pengujian tidak dapat disimpulkan: Tes tidak dijalankan. Kesalahan?

172

Saya memiliki kelas tes dan di bawah ini saya telah memposting tes sampel dari kelas tes

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());
        }
    }
}

Ketika saya menjalankan proyek saya mendapatkan layar berikut masukkan deskripsi gambar di sini

Saya memeriksa referensi dan proyek uji memiliki referensi ke proyek utama. Adakah gagasan mengapa tes ini tidak berjalan atau mengatakan bahwa itu tidak meyakinkan?

Edit 1:

Saya melihat posting di sini dan mengubah arsitektur prosesor default pengaturan pengujian saya ke X64 tetapi masih tidak berfungsi.

Cybercop
sumber
3
Ini masalah yang diketahui di ReSharper. Ada beberapa solusi potensial di sini: stackoverflow.com/questions/12191352/… .
Chris Mantle
3
Sudahkah Anda membersihkan dan membangun kembali? Saya ingat ada beberapa keanehan dalam VS2010 dengan kehilangan referensi ke majelis setelah Anda memperbarui dan membangunnya kembali.
Mark Walsh
@ ChrisMantle Saya memeriksanya dan mengubah arsitektur prosesor default saya, tetapi masih tidak berfungsi
Cybercop
@ MarkWalsh Saya menggunakan VS2012. Saya masih membersihkan dan membangun kembali solusi seperti yang Anda katakan, tetapi masih tidak berfungsi
Cybercop
9
pertanyaan ini dibahas di meta
nyamuk

Jawaban:

133

Untuk berjaga-jaga jika tidak ada opsi di atas bekerja untuk siapa pun saya memperbaiki contoh saya dari kesalahan ini dengan memperhatikan entri yang rusak di App.Config karena paket nuget yang hilang dalam proyek pengujian.

Chris Pacey
sumber
5
Masalah yang sama di sini. Akan lebih baik jika R # akan menggelembungkan kesalahan (kesalahan menginisialisasi sistem konfigurasi) sehingga jelas mengapa tes tidak berjalan.
Geoffrey Hudik
5
Terima kasih, untuk saya, saya menempatkan pengaturan aplikasi di atas konfigurasi karena kesalahan, memindahkannya ke posisi yang tepat dan berfungsi.
anIBMer
3
Saya menambahkan specflow melalui nuget dan memasukkan entri ke dalam App.config. Itu menciptakan seluruh masalah. Saya membuat App.config baru dan menambahkan referensi lagi dan diperbaiki. Terima kasih atas informasinya.
Vinee
Saya dapat membenarkan bahwa hampir dua tahun setelah posting ini awalnya dibuat, ini tampaknya masih menjadi perbaikan yang layak (saya menggunakan VS 2015 dan ReSharper 9.2).
Steven D.
2
Bingo! Terimakasih Chris. Dalam kasus saya itu adalah bagian log4net tanpa nama bagian maching di <configSections>.
datps
47

Bagi saya itu agak membuat frustrasi, tapi saya sudah menemukan solusi untuk kasus saya setidaknya:

Jika TestMethod Anda async, itu tidak bisa dibatalkan. Ini HARUS mengembalikan Tugas.

Semoga ini bisa membantu seseorang :)

Krzysztof Skowronek
sumber
37

Saya memiliki masalah yang sama dengan resharper dan saya memperbaiki kesalahan ini dengan mengubah opsi:

Resharper => Opsi => Alat => Pengujian Unit

Saya hanya perlu menghapus centang opsi "Shadow-copy rakitan sedang diuji"

Elias Platek
sumber
2
Ini mengurutkannya untuk saya, setelah melihat banyak perbaikan lainnya. Saya menggunakan VS 2013 dan R # v8.1
Spikeh
10
Tidak bekerja untuk saya, saya menggunakan VS2015 dengan Reshaper 10.
Nemeas
Ini membuatnya untuk saya bekerja dengan VS2017 dan Resharper Ultimate 2017.2.2 pada proyek uji NETCore.
Tasker
Berfungsi untuk saya dan saya tidak harus menghapus tes sekarang. Terima kasih Elias.
PhoenixPan
22

Itu adalah masalah Resharper. Dalam opsi Resharper-> Alat-> MSTEST, saya menghapus centang pada Run Legacy Pakai dan sekarang berfungsi.

Cybercop
sumber
61
Saya tidak memiliki opsi di bawah Tools-> Unit Testing-> MsTest. (Resharper 9.2.)
cederlof
Saya juga belum memiliki opsi seperti itu di R # 2017.2.
realsonic
Bagi saya, pilihannya adalah Tools -> Unit Testing-> MsTest dan tidak diperiksa membantu.
Marcel
15

Saya mengalami masalah ini, dan ternyata sama dengan masalah di sini . Jawaban ini memecahkan masalah bagi saya .

  1. Hapus centang "Hanya buat proyek startup dan dependensi saat Jalankan" (Opsi -> Proyek dan Solusi -> Bangun dan Jalankan)
  2. Di Pengelola Konfigurasi, pastikan proyek pengaktifan dan proyek Uji telah "Bangun" dicentang.

Kedua kalinya saya mengenai masalah ini, itu karena ampersand di filepath ke proyek di mana tes berada. Ini berfungsi baik dengan test runner ReSharper, tetapi tidak untuk dotCover. Lepaskan ampersand dari filepath.

Ini adalah bug yang dikonfirmasi dengan dotCover.

Bebek karet
sumber
1
Bekerja untukku. VS2017 dengan ReSharper 2017.1.3 :-)
Lars Holdgaard
12

Bagi saya, hanya membersihkan dan membangun kembali solusi memperbaikinya.

Mike Chamberlain
sumber
Saya (secara tidak sengaja) mengembalikan perubahan ke file proyek ketika mengubah cabang di Git. Ketika saya mencoba menjalankan tes dengan mengklik kanan di kelas (kode jendela masih terbuka) itu tidak berjalan karena itu bukan bagian dari solusi.
mortb
12

Bagi saya, masalahnya adalah pengaturan file XML NUnit / ReSharper rusak (karena kekurangan daya yang tidak terduga).

Untuk mengidentifikasi kesalahan, saya memulai Visual Studio dengan perintah ini :

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

Memeriksa file mengungkapkan pengecualian berikut:

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)

Perhatikan bahwa ini BUKAN app.config proyek uji!

Sebuah cepat Googling sekitar diidentifikasi berikut file sebagai pelakunya:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

Itu ada, tetapi kosong. Menghapusnya dan memulai kembali Visual Studio menyelesaikan masalah.

(Menggunakan Visual Studio Professional 2017 v15.3.5 dan ReSharper 2017.2.1).

Reyhn
sumber
12

Saya menghadapi masalah ini di pembaruan vs 3 2017 dengan Resharper Ultimate 2017.2

Mulai ulang vs atau mulai ulang mesin tidak dapat membantu.

Saya menyelesaikan masalah dengan menghapus Cache sebagai berikut:

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

Memperbarui:

Ada tombol "kesalahan" (saya temukan di Resharper 2018) di sudut kanan atas jendela tes.

Jika Anda mengklik tombol kesalahan, itu menunjukkan pesan kesalahan yang dapat membantu dalam menyelesaikan masalah.

Untuk melacak akar masalah, jalankan Visual Studio dalam mode log. Di vs 2017, Jalankan perintah:

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

Jalankan tes.

Tinjau file log test_log.txt dan cari 'kesalahan' dalam file tersebut.

File log sangat membantu untuk menemukan kesalahan yang dapat Anda atasi atau Anda dapat mengirim masalah dengan file log ke tim dukungan teknis Resharper .

M.Hassan
sumber
7

Saya baru saja memperbaiki masalah ini juga. Namun, tidak ada solusi di utas ini yang berfungsi. Inilah yang saya lakukan ...

Karena R # tidak memberikan perincian tentang mengapa semuanya gagal, saya memutuskan untuk mencoba pelari uji VS2013 bawaan. Itu mengalami perilaku yang sama persis di mana tidak ada tes yang dijalankan. Namun, melihat di jendela Output, saya akhirnya memiliki pesan kesalahan:

Pengecualian terjadi saat memanggil pelaksana pelaksana: // mstestadapter / v1 ': Referensi objek tidak disetel ke instance obyek.

Ini membawa saya ke utas lainnya di SO dengan solusi. Percayalah, saya tidak akan pernah bisa menebak apa masalahnya.

Saya baru-baru ini membuat beberapa perubahan pada file AssemblyInfo.cs saat membuat paket NuGet. Salah satu perubahan termasuk menentukan nilai budaya perakitan "en".

Saya mengubah ini:

[assembly: AssemblyCulture("")] 

untuk ini:

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

Itu dia! Itulah yang secara tidak masuk akal memecahkan tes unit saya. Namun saya masih tidak mengerti mengapa. Tapi setidaknya semuanya bekerja lagi. Setelah saya mengembalikan perubahan ini (yaitu, set budaya kembali ke ""), tes saya mulai berjalan lagi.

Semoga itu bisa membantu seseorang di luar sana.

mikesigs
sumber
1
Saya mengubah budaya perakitan dan R # berhenti menjalankan tes.
Valentine Zakharenko
Terima kasih! mengecek jendela keluaran dengan gembira masalah saya, kelas tidak umum!
Jony Feldman
7

Dalam kasus saya, [Test]metode itu adil private. Malu

pkuderov
sumber
1
Aneh, ReSharper hanya mengeluh kepada saya bahwa [Tes] saya metode pribadi. Harus menjadi fitur baru.
Kevin B Burns
7

Masalah saya adalah saya hanya menginstal NUnit dengan nuget. Saya belum menginstal NUnit3TestAdapter yang juga diperlukan.

Install-Package NUnit3TestAdapter
Mike Olund
sumber
Ini adalah salah satu masalah frustasi yang memberi Anda sedikit petunjuk tentang masalah yang sebenarnya!
Ben Power
6

Dalam kasus saya itu adalah kesalahan yang saya lakukan saat menyalin connectionstring di app.config .. Saya telah memasukkannya ke dalam tag configSections!

Butuh waktu beberapa saat untuk menyadari bahwa ... terima kasih VS intellisense .. atau apakah itu pemanfaat?

Kcats Wolfrevo
sumber
dalam kasus saya, itu adalah hasil dari perubahan yang tidak valid pada file config
evgenyl
Masalah saya disebabkan oleh resolusi konflik Git yang buruk sehingga informasi perubahan Head di file konfigurasi saya diselesaikan
KiwiSunGoddess
Hampir sama terjadi pada saya, saya telah menambahkan string koneksi ke bagian appSettings redundan, ketika saya menghapus bagian appSettings berlebihan dan memindahkan string koneksi ke appSettings asli itu berfungsi.
Sirar Salih
Jawaban tentang app.config yang rusak sama dengan yang pertama stackoverflow.com/a/21386881/52277
Michael Freidgeim
5

Saya punya masalah serupa. VS 2010, c # CLR 2 Nunit 2.5.7, hanya membangun> solusi bersih dari VS membantu menyelesaikan masalah ini

Abdul Jabbar
sumber
5

Dalam kasus saya, saya membuat metode pengujian async yang kembali void. Kembali Taskbukannya voidmenyelesaikan masalah.

Neshta
sumber
4

Sudahkah Anda menambahkan ketergantungan DLL baru-baru ini? ... seperti saya

Saya hanya mengalami masalah yang sama dan itu sangat menjengkelkan untuk tidak mendapatkan petunjuk di jendela hasil tes atau di tempat lain yang praktis.

Penyebabnya sangat bodoh: Saya baru saja menambahkan sehari sebelum ketergantungan pada DLL eksternal tambahan dalam sub-proyek, dan aplikasi proyek utama memang dibangun dan berjalan dengan benar setelah perubahan. Tetapi pengujian unit saya berada dalam proyek sejenis dengan aplikasi utama, dan dengan demikian juga memiliki ketergantungan pada sub proyek yang diubah ini di mana DLL dipanggil ... namun, lokasi runtime dari proyek uji bukan dari App utama! Jadi mengubah build untuk melakukan penyalinan DLL yang hilang ke dalam direktori runtime test memperbaiki masalahnya.

berhauz
sumber
4

Saya menggunakan VS2013, ReSharper 9.1 dengan ekstensi MSpec dari ReSharper dan Moq. Saya mengalami kesalahan "tidak meyakinkan" yang sama.

Ternyata salah satu Mock saya dari Moq tidak diinisialisasi, hanya dinyatakan. Yang diinisialisasi semua tes berjalan lagi.

Espen Ekvang
sumber
4

Dalam kasus saya, saya mendapatkan kesalahan ini karena mode 'Rilis' di mana pembangunan proyek UnitTests hanya dimatikan. Beralih kembali ke mode 'Debug' memperbaikinya.

Sangat mengejutkan bahwa ReSharper tidak bisa mengatakan apa-apa kalau-kalau tidak menemukan perpustakaan UnitTests sama sekali. Serius, ini memalukan;)

Semoga ini bisa membantu seseorang

RR-Fireball
sumber
4

Dalam kasus saya, semua tes dalam beberapa proyek uji dalam solusi mulai tidak berjalan setelah saya menambahkan proyek baru. Menggunakan VS 2017 dengan ReSharper 2017.1.2 di sini.

Pertama-tama, pastikan Anda tidak membuang waktu dengan menganggap bahwa masalah Anda terkait dengan ReSharper. Sangat mudah untuk mengasumsikan bahwa ada sesuatu yang salah dengan ReSharper jika Anda menggunakan fitur pengujian unit termasuk Unit Test Explorer . Buka Visual Studio's Test Explorer di bawah menu Test dan coba Run All ". Keuntungan tambahan melakukan ini adalah bahwa jendela output akan menampilkan pesan kesalahan yang mungkin mengarahkan Anda ke arah yang benar. Jika Anda melihat bahwa serangkaian tes yang sama tidak dijalankan, maka aman untuk mengasumsikan bahwa masalahnya adalah dengan Visual Studio dan bukan ReSharper.

Saya akhirnya menghapus dan menambahkan kembali salah satu platform solusi aktif , CPU apa pun , di Pengelola Konfigurasi . Dengan melakukannya, setelah menyimpan perubahan saya dan membuka kembali solusinya, semua tes mulai berjalan lagi.

Saya percaya ada entri konfigurasi yang tidak terduga dalam file solusi ketika saya menambahkan proyek baru dan dengan menggunakan menciptakan kembali salah satu platform, itu diperbaiki sendiri. Saya mencoba beda tetapi sulit untuk mengatakan apa yang berubah untuk menyebabkan masalah.

wonster
sumber
Dalam kasus saya, saya salah ketik di app.config <AppConfig> alih-alih <AppSettings>. Saya suka ReSharper, tetapi mereka BENAR-BENAR perlu mengerjakan pesan kesalahan mereka!
MichaelMilom
4

Bagi mereka yang mengalami masalah ini untuk proyek pengujian saya .NET Core 2.0di Visual Studio 2017 Community (v15.3 3). Saya juga menggunakan bug ini JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346- ada bug yang saya posting.

JetBrains menyarankan untuk membuat proyek uji baru dari awal untuk mereproduksinya. Ketika saya melakukan itu dan mendapatkan tes yang berfungsi dengan baik, saya menemukan alasan yang menyebabkan masalah:

  • Hapus ini dari *.csprojfile Anda :
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}"

Ketika saya melakukan itu - tes mulai bekerja dengan baik.

Dmitry Pavlov
sumber
Dmitry, terima kasih, itu membantu saya. Bisakah Anda jelaskan apa layanan ini?
Vladimir Melekh
@VladimirMelekh periksa ini github.com/Microsoft/vstest/issues/472
Dmitry Pavlov
3

Saya menggunakan VS2010, NUnit 2.6.3 (meskipun secara internal ReSharper mengatakan menggunakan 2.6.2?), ReSharper 7.7.1 & NCrunch 2.5.0.12 dan menjalankan hal yang sama "... tes tidak dapat disimpulkan ..." dengan NUnit, tetapi NCrunch mengatakan semuanya baik-baik saja. Untuk sebagian besar hari ini NUnit & NCrunch setuju untuk melakukan tes yang mana dan yang membutuhkan refactoring, kemudian terjadi sesuatu yang masih belum saya pahami, dan untuk sementara waktu NCrunch mengatakan saya gagal dalam tes (tetapi melangkah melalui tes menunjukkan mereka untuk lulus), kemudian memutuskan bahwa mereka semua bekerja, dan NUnit mulai mengeluh tentang semua tes saya kecuali satu dengan pesan yang sama "..test tidak dapat disimpulkan ..." yang saya lagi dapat melewati satu langkah untuk lulus meskipun NUnit melanjutkan untuk menunjukkannya sebagai "tidak meyakinkan").

Saya mencoba beberapa saran di atas tetapi tidak berhasil, dan akhirnya hanya menutup VS2010 & membuka kembali solusinya. Voila, sekarang semua tes saya senang lagi, dan NCrunch & NUnit melaporkan hasil yang sama lagi. Sayangnya saya tidak tahu apa yang berubah menyebabkan mereka tidak sinkron, tetapi menutup & membuka kembali VS2010 tampaknya telah memperbaikinya.

Mungkin orang lain akan mengalami ini dan dapat menggunakan solusi sederhana ini (jika pada akhirnya tidak memuaskan karena Anda tidak tahu apa perbaikan yang sebenarnya).

delliottg
sumber
3

Saya punya masalah yang sama. Pelakunya adalah referensi eksternal yang tidak kompatibel dengan pengaturan build proyek saya. Untuk menyelesaikannya, saya mengklik kanan pada proyek-> properties-> build-> Platform Target-> perubahan dari Any CPU ke x86.

* .Dll tertentu yang saya kerjakan adalah System.Data.SQLite. Khusus * .dll tersebut di-hardcode untuk operasi 32 bit. Pengaturan "Any CPU" berusaha memuatnya sebagai 64 bit.

sapbucket
sumber
Ketidakcocokan target platform juga dapat terjadi dengan referensi ke proyek lain di dalam solusi yang sama.
Chaquotay
3

Solusi saya:

NUnit 3.2.0 memiliki beberapa masalah dengan Resharper - downgrade ke 2.6.4:

update-package nunit -version 2.6.4
David McEleney
sumber
3

Dalam kasus saya, metode pengujian saya bersifat pribadi. Saya mengubahnya ke publik dan berhasil.

Andrew Burns
sumber
3

Disebabkan oleh file App.Config yang hilang (tidak rusak). Menambahkan baru (Tambah -> Item Baru ... -> File Konfigurasi Aplikasi) memperbaikinya.

AnotherFineMess
sumber
3

Saya memiliki masalah yang sama. Ini terkait dengan versi kompatibilitas antara NUnit 3.5 dan Resharper 9.2, karena diselesaikan dengan menurunkan versi dari NUnit 3.5 ke 2.6.4. Ini berhasil untuk saya. semoga berhasil.

Ali Golgol
sumber
Saya memiliki kumpulan Uji yang dikompilasi melawan 3.6.1, dan perakitan Uji utama saya dikompilasi melawan 3.7.1. Turun ke 3.6.1 dan sekarang semuanya baik.
Tom
Itu adalah kasus untuk ReSharper 2017.3.2 dan NUnit 3.11. Lihat komentar untuk nunit github.com/nunit/nunit/issues/3086#issuecomment-466988760
Puterdo Borato
3

Jika Anda menggunakan xUnit, saya memecahkan masalah menginstal xunit.running.visualstudiopaket. (sedang menggunakan xUnit 2.3.1dan VS17 Enterprise 15.3.5)

Alessio Di Salvo
sumber
3

Saya mengalami masalah yang sama untuk menjalankan tes menggunakan kerangka kerja NUnit. "Tidak meyakinkan: Tes tidak dijalankan" Visual Studio 2017 15.5.6

ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130

ASK Menambahkan ketergantungan proyek ke Microsoft.NET.Test.Sdk

julio cesar
sumber
Tidak membantu dalam kasus saya
Dmitry Avtonomov
2

Bagi yang terburu-buru untuk pelaksanaan tes, saya harus menggunakan VS 2017 test explorer untuk menjalankan tes;

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Teoman shipahi
sumber
2

Kesalahan ini terjadi dengan Visual Studio 2017 dan resharper versi 2018.2.3 tetapi perbaikan berlaku untuk versi Visual Studio 2019 untuk.

Cara mengatasinya, untuk mendapatkan tes yang berfungsi di Resharper, adalah hanya memperbarui ke versi terbaru dari Resharper (2019.2.1) pada saat penulisan.

Boris
sumber
1

Saya memiliki masalah yang sama persis dan tidak ada yang membantu.

akhirnya saya melihat bahwa saya memiliki ketidakcocokan dalam ruang nama saya pada proyek unit dan proyek uji unit.

Namespace proyek unit saya adalah unit.project dan proyek uji bernama unit.project.tests tetapi namespace default dari tes ini sama dengan unit, keduanya adalah unit.project.

Setelah saya perbarui ruang nama menjadi berbeda (satu ruang nama untuk setiap proyek) semuanya bekerja!

perak
sumber
Ya saya punya masalah yang sama. Idenya mungkin untuk membuat proyek pengujian dan proyek target identik untuk kemudahan akses, tetapi sekrup dengan pelari uji dan menghasilkan masalah ini dari OP.
atconway