Tes tidak berjalan di Test Explorer


147

Saat ini saya sedang mengerjakan solusi yang saat ini memiliki 32 Unittests. Saya telah bekerja dengan pelari uji resharper - yang berfungsi dengan baik. Semua tes sedang berjalan, semua tes menunjukkan hasil tes yang tepat. Sekarang seorang rekan kerja memberi tahu saya, bahwa tes tidak berjalan pada mesinnya menggunakan Visual Studio test explorer. Mereka tidak bekerja di mesin saya, jadi saya dapat mengecualikan beberapa file lokal yang hilang atau sesuatu.

Explorer Uji menampilkan semua tes unit, tetapi sekali mengklik "Jalankan Semua", semua tes menjadi abu-abu dan tidak menunjukkan hasil dari uji coba:

masukkan deskripsi gambar di sini

  • Semua kelas tes bersifat publik
  • Semua kelas uji [TestClass]dideklarasikan atributnya
  • Semua metode pengujian menggunakan [TestMethod]atribut
  • Kode produktivitas dan proyek pengujian menargetkan .NET 3.5.
  • Saya sudah mencoba untuk bersih membangun solusi saya, dan / atau menghapus semua obj, bin, Debugdan Releasefolder

Saya akan menghargai setiap petunjuk yang dapat menyebabkan perilaku seperti itu.


3
Perbarui ReSharper Anda. Lihat stackoverflow.com/questions/16011775/…
kmhigashioka

18
Bukankah lebih baik jika VS mengatakan mengapa tes tidak dijalankan? Platform target yang tidak cocok, adaptor uji yang hilang, ... :(
Bernhard Hofmann

1
Di mana disebutkan mereka menggunakan ReSharper?
Alex 75

6
@BernhardHofmann Saya mengalami masalah seperti ini sekarang dan ternyata VS memuntahkan beberapa pesan kesalahan dalam Output> Tes. Penting. Frustasi bahwa VS tidak membuat mereka lebih terlihat, tetapi itu adalah tempat untuk melihat dalam situasi seperti ini.
JLRishe

2
Anda semua mungkin tertarik untuk membatalkan permintaan fitur ini: developercommunity.visualstudio.com/idea/947742/…
Kyle Delaney

Jawaban:


157

Jika proyek Anda tidak semuanya AnyCpu maka Anda mungkin juga ingin memeriksa bahwa 2 pengaturan berikut cocok:

  1. [Proyek uji klik kanan] -> properties -> Build -> Target platform - mis. X64

  2. [Menu Utama] -> Tes -> Pengaturan Tes -> Arsitektur Prosesor Default -> X64

Saya menemukan bahwa ketika ini tidak cocok dengan proyek pengujian saya akan diam-diam gagal dijalankan.


5
jawaban ini leher-dan-leher dengan "nyalakan dan matikan lagi" jadi, jika ini bekerja untuk Anda, silakan lakukan upvote.
lukkea

yang ini memperbaiki masalah saya (beralih dari platform campuran ke anycpu)
Marcel Studer

1
pastikan proyek pengujian Anda bukan netstandard2.0 tetapi netcoreapp2.2
user2033412

4
Bekerja. Saya benar-benar dengan VS akan, Anda tahu, memberi kami peringatan yang jelas atau pesan kesalahan atau sesuatu.
anon

9
Versi VS2019: Menu Utama -> Tes -> Arsitektur Prosesor untuk Proyek AnyCPU -> X64.
StackOverthrow

64

Saya memiliki masalah yang sama di VS 2017. Dalam kasus saya itu diselesaikan dengan memulai kembali VS.


7
komentar saya sebelumnya mengapa saya memberikan downvote ini telah dihapus, jadi saya akan sedikit lebih jelas. Ini bukan solusi untuk masalah ini; ini merupakan perbaikan sementara yang tidak menyelesaikan masalah mendasar. Saya tidak berpikir SO harus menjadi tempat orang harus datang untuk diberitahu "matikan dan hidupkan lagi", itu adalah pengetahuan yang harus dipelajari sebelum Anda tiba di sini. Silakan lihat jawaban Joseph Simpson untuk solusi.
lukkea

5
@lukkea saya ikuti jawaban Joseph Simpson dan dikonfirmasi, bahwa semua proyek saya di mana AnyCpu. Saya masih memiliki masalah yang dijelaskan di sini. Bagi saya cukup restart VS membantu. Itu bukan pertama kalinya VS2012 memiliki jenis hickup (dan tidak hanya pada mesin saya). Saya setuju dengan Anda, bahwa ini bukan solusi yang baik, tetapi jika tidak ada yang salah dengan proyek, itu mungkin satu-satunya bantuan. Orang harus memeriksa apakah membersihkan suatu pembangunan kembali tidak membantu.
Sascha

2
Jika hanya 'menyalakan dan mematikannya lagi' akan memperbaiki semua masalah saya. Masih mengejutkan berapa banyak yang diperbaiki. Agak memalukan bahwa saya harus pergi ke stackoverflow untuk diingatkan untuk melakukannya, tetapi saya menemukan jawaban ini berguna.
Richard Garside

2
@lukka terkadang visual studio adalah masalah yang mendasarinya dan memulai kembali adalah solusinya
JSON

1
Masih bekerja untuk VS2019 ....
Tronald

45

Jika Anda menggunakan NUnit daripada MSTest maka Anda akan memerlukan NUnit Test Adapter Extension untuk Visual Studio 2012/2013.


9
Ini membantu saya mengetahui bahwa saya perlu menginstal "NUnit 3 Test Adapter": marketplace.visualstudio.com/…
Westerlund.io

10
Dalam VS 2019 bekerja bagi saya untuk menginstal adaptor dari manajer paket nuget.org/packages/NUnit3TestAdapter
maylon

Menurut halaman ini Anda juga perlu menginstal Microsoft.NET.Test.Sdkdari Nuget
BlueRaja - Danny Pflughoeft

Di VS 2017 saya menginstal Extension Nunit 3 Test Adapter dan berhasil.
Bob Lokerse

Di VS 2019 saya juga menginstal Extension Nunit 3 Test Adapter dan berfungsi. Satu catatan: Saya juga perlu memperbarui Visual Studio.
Bob Lokerse

43

Saya harus mengubah metode pengujian async saya untuk mengembalikan Task dan bukannya batal.

Tes kemudian aktif dan dapat dijalankan di Test Explorer.


1
Tidak ada cara untuk menunggu metode async void selesai. Void Async adalah "api dan lupakan". Itu sebabnya mereka tidak bisa diuji.
Ketobomb

Facepalming yang saya lakukan ketika saya membaca ini bergema di atas tanah ... Terima kasih telah menunjukkan kebodohan saya. Itu berhasil bagi saya. Diunggah
JP Chapleau

Meskipun diajukan di bawah kategori "tidak ada". Saya berharap ini bisa naik-pilih sebagai super jelas bahwa jenis pengembalian Anda harus Tugas tetapi mudah dilupakan (karena tampaknya tidak ada tes unit lain di dunia mengembalikan apa pun kecuali batal) dan mengirim Anda ke lubang kelinci memperbaiki unit Anda konfigurasi tes ketika tidak ada masalah konfigurasi yang sebenarnya. Sangat berharap ini hanya menyebabkan kompiler atau yang paling tidak menyebabkan kesalahan runtime.
pat8719

2
@ pat8719, sepertinya ide yang bagus untuk penganalisa kode. Mereka tidak terlalu sulit untuk menulis. Saya hanya menulis fakta xunit async void Foo()dan analis mereka tidak mengeluh, tetapi mereka pasti bisa menambahkan satu yang akan melakukannya. cc: @bradwilson
benmccallum

22

Periksa kerangka tes apa yang ditulis (mis. Nunit, xunit, VS test, dll.) Dan pastikan Anda telah menginstal ekstensi adaptor adaptor / pelari yang benar.

Bagi saya NUnit 3 Test Adapter yang hilang dan saya mengkonfirmasi nomor versi yang diperlukan dengan melihat versi dependensi nunit.framework (pilih .dll di pohon Dependency di Solution Explorer dan tekan F4 untuk membuka jendela Properties).


2
Catatan untuk diri sendiri: Proyek asli MSTest saya dire Microsoft.VisualStudio.QualityTools.UnitTestFramework(tidak yakin versi mana). Diselesaikan masalah di mana metode tidak berjalan (atau ditemukan) dengan menghapus referensi itu, dan menginstal MSTest (v2.1.0) terbaru (Test Framework) (dan Framework)
Adam Cox

@AdamCox Sudah Microsoft.VisualStudio.TestTools.UnitTestingusang? Saya memiliki beberapa tes menggunakan ini yang tiba-tiba berhenti berjalan seperti di atas setelah menambahkan kembali beberapa referensi ke proyek yang mereka andalkan.
ebyrob

@ebyrob, jawaban Athanasios di bawah mungkin relevan. Tampaknya ia tidak hanya harus meningkatkan / meningkatkan ke paket MSTest. *, Tetapi juga menambahkan beberapa dependensi dan memperbaiki beberapa pengalihan yang mengikat. Periksa output peringatan Anda.
benmccallum

16

TLDR: Perbarui paket pengujian, lihat ke output -> test console

Saya berjuang dengan ini selama satu setengah hari. jadi inilah yang saya lakukan untuk menyelesaikannya:

Gejala

  1. 5 proyek uji Unit, semua dapat ditemukan di TestExplorer
  2. 2 dari 5 dijalankan dengan benar
  3. 3 menyatakan tidak berjalan sama sekali
  4. Masalahnya dimulai setelah pembaruan .net framework

Penyelidikan

Karena semua paket diperbarui selama pembaruan .net framework, saya mulai dengan perbedaan antara proyek kerja dan tidak bekerja. Petunjuk pertama adalah bahwa ketiga proyek menggunakan: MSTest.TestAdapter dan MSTest.TestFramework

Tentu saja saya pergi ke -> Output console -> Test dropdown pada VS 2019 dan melihat hasilnya. Tidak ada yang berguna di sana.

Langkah salah satu solusinya : Perbarui MSTest.TestAdapter dan MSTest.TestFramework ke versi 2.0.0

Langkah dua dari solusi : Sekarang konsol Output -> Uji dropdown output mulai menunjukkan satu demi satu, paket yang hilang dan pengalihan yang salah mengikat

Langkah tiga dari solusi : Secara manual tambahkan paket yang hilang. Bagi saya itu

  1. System.Runtime.Extentions
  2. System.Refleksi
  3. Mungkin ada lagi yang hilang

Langkah 4 dari solusi : Dihapus / Memperbaiki pengalihan mengikat yang tidak perlu.

Saya harap ini akan membantu orang lain.


Anda menyelamatkan saya hari itu setengah! Saya memutakhirkan proyek versi 4.5 FW dan mencoba menghapus semua hal yang tidak perlu dari paket dan berakhir dalam situasi ini. Terima kasih!
Numan

Saya pikir saya sedang mengalami sesuatu yang serupa. Akhirnya saya baru saja membuat ulang proyek dari awal. Rupanya ada baris dalam file * .csproj yang mengatur ToolsVersiondan menabrak milik saya mengacaukan semuanya. Yang bisa saya katakan adalah "pembeli waspada" untuk pengujian unit MS dan siap untuk mengganti file * .csproj Anda pada saat itu juga, barang ini terintegrasi dengan erat dan sangat bergantung pada versi.
ebyrob

Terima kasih, walaupun tidak secara langsung masalah saya, tip untuk memeriksa output konsol menunjukkan kesalahan (metode DBContext Buang memiliki kesalahan di dalamnya) yang mencegah tes saya berjalan.
Iain Carlin


11

Saya punya masalah ini dan bagi saya itu disebabkan oleh memiliki beberapa Proyek Uji dengan versi berbeda dari:

  • MSTest.TestAdapter
  • MSTest.TestFramework

Mengkonsolidasikan paket nuget untuk proyek sehingga mereka sama menyelesaikan masalah untuk saya.


1
Jawaban ini membantu saya menemukan penyebab yang sama. Dalam kasus saya beberapa proyek pengujian memiliki referensi ke Microsoft.VisualStudio.TestPlatform.TestFramework (dan tidak berjalan) sementara yang lain memiliki referensi ke Microsoft.VisualStudio.QualaityTools.UnitTestFramework (yang merupakan proyek yang akan berjalan).
jr

11

Punya masalah yang sama setelah instalasi bersih VS 2019. Tes ditemukan tetapi tidak dijalankan dengan "Terjadi kesalahan tak terduga". Diperbaiki dengan mengatur x64 alih-alih x86 yang dipilih secara default.

masukkan deskripsi gambar di sini


4
Ini adalah perbaikan untuk saya, bersamaan dengan memulai kembali VS dan menghapus folder .vs. Terima kasih.
Donald.Rekam

Saya tidak percaya ini masih menjadi masalah ... Mudah-mudahan, Microsoft mengeluarkan semacam peringatan untuk masalah klasik itu pada satu titik.
Guillaume LaHaye

10

Saya menemukan bahwa dalam proyek itu tidak merujuk pada perakitan Microsoft.VisualStudio.QualityTools.UnitTestFramework . Sebaliknya, itu referensi Microsoft.VisualStudio.TestPlatform.TestFramework dan Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions . Ketika saya menghapus dua referensi dan menambahkan referensi ke Microsoft.VisualStudio.QualityTools.UnitTestFramework perakitan tes yang sebelumnya ditandai dengan titik seru biru tiba-tiba menjadi aktif dan mulai bekerja.

Tes unit tidak berjalan dengan perakitan yang salah

Dengan perakitan yang tepat, tes berjalan


3
Setelah beralih dari .NET Framework 4.6.2 ke .NET Framework 4.7.2 pengujian saya tidak berjalan lagi. Setelah berjam-jam mencoba, hanya solusi ini yang berhasil untuk saya.
Éric Bergeron

Setelah beralih dari .NET Framework 4.6.2 ke .NET Framework 4.7.2 - Saya harus menghapus semua pengalihan yang mengikat di app.config
bkwdesign

8

Dalam kasus saya, itu karena satu proyek pengujian dalam solusi saya memiliki MSTest.TestFramework dan MSTest.TestAdapter paket nuget diinstal tetapi yang lain tidak. Paket-paket ini tampaknya tidak diperlukan untuk menjalankan tes sampai satu proyek dalam solusi menginstalnya.

Masalah ini diperbaiki dengan menginstal paket-paket itu pada proyek uji yang hilang.


Dalam kasus saya, ini kebalikannya: Setiap proyek uji unit, yang memiliki paket nuget MSTest tidak akan berjalan, sedangkan yang lain lakukan. Aneh.
Palle Due

Diselesaikan : Saya punya file .testsettings. Paket MSTest memerlukan file .runsettings. Itu sebabnya tes tidak berjalan.
Palle Due


7

Instal Nunit3TestAdapterNuget telah memecahkan masalah ini


ini memperbaiki masalah saya juga! :)
Eru

6

masukkan deskripsi gambar di sini

Mengatur Arsitektur Prosesor untuk Proyek AnyCPU di Test Explorer memperbaiki masalah saya! Lihat tangkapan layar di atas.


Terima kasih banyak! Itu membantu saya =)
Alexander Brattsev

4

Dalam kasus saya, saya memiliki async voidMetode dan diganti async Task, jadi tes berjalan seperti yang saya harapkan:

    [TestMethod]
    public async  void SendTest(){}

ubah dengan :

    [TestMethod]
    public async  Task SendTest(){}

1
Ini adalah masalah saya
Kyle Delaney

3

Saya memiliki gejala yang sama.

Harap pastikan Anda memasang ekstensi Visual Studio yang tepat melalui Alat - Ekstensi dan Pembaruan. Dalam kasus saya, saya harus menginstal XUnit dan Specflow dari opsi Online.

Kemudian bersihkan solusinya dan bangun kembali.

Jika itu masih tidak membantu, kosongkan direktori temp Anda (cari% temp% di pencarian menu Start dan hapus semua konten di Temp)

Dan akhirnya mencoba menguninstall Resharper yang akhirnya memperbaiki masalah saya.


4
Copot Resharper ?! Saya tidak berpikir ini adalah solusi ^^
Steve Rakebrandt

3

Anda dapat melihat output kesalahan dari pelari tes Anda dengan membuka panel Output (view -> output) dan memilih "tes" dari dropdown "Tampilkan output dari"

tampilkan keluaran dari


Selain itu, jika Anda memasang Resharper, Anda dapat membuka file tes dan mengarahkan kursor ke lingkaran tes di sebelah tes untuk mendapatkan info kesalahan tambahan

Hasil panen ulang

Mengklik itu akan membawa Anda ke jendela dengan informasi yang lebih rinci. Atau, Anda dapat membuka jendela itu dengan membuka Extensions -> Reshaper -> Windows -> Hasil Eksplorasi Uji Unit

Eksplorasi Uji Unit Resharper


2

Ini dia proyek uji yang tidak ditandai untuk dibangun:

Build -> Configuration Manager ... -> periksa build untuk proyek pengujian Anda


2

Karena saya tiba di sini dengan kesalahan semacam ini, saya memposting masalah / solusi saya:

Gejala:

  • Tidak semua tes berjalan, tetapi mereka tidak bergantung pada setiap proyek, hanya beberapa dari mereka yang dieksekusi.
  • Semua yang dieksekusi berwarna hijau.
  • Tech stack: dotnet core / XUnit / FluentAssertions
  • Semua tes terdeteksi dan diperbarui jika itu berubah.
  • Dengan memilih atau menjalankan "Tidak menjalankan tes" beberapa kali mereka dapat dieksekusi.

Masalah:

Ada kesalahan dalam kode yang melemparkan pengecualian di dalam utas lainnya. Semua pernyataan pengujian lulus tetapi membatalkan pelaksanaan pengujian. Saya bisa melihat kesalahan dalam "Tes output" (NullException).


+1 Saya mencoba men-debug tes tertentu. Ketika saya akhirnya menjalankan tes lain yang lebih sederhana, maka saya bisa men-debug tes tertentu. Jawaban ini membuat saya mencobanya.
Halvard

2

Memiliki gejala yang sama, dalam kasus saya itu adalah versi SDK dotnet inti yang menjadi masalah.

Proyek-proyek ini menargetkan 2.2, dan mampu membangun menggunakan 3.0. Setelah menginstal versi 2.2 SDK terbaru mereka dapat menjalankan.


2

Telah mencoba banyak opsi dengan Visual Studio 2019 Versi 16.4.6 dan Microsoft.VisualStudio.TestTools.UnitTesting, tetapi untuk saat ini satu-satunya cara untuk menjalankan tes dengan sukses adalah dengan menjalankan perintah berikutnya di konsol

dotnet test

Tes ditemukan di Test Explorer tetapi hasilnya "Tidak Berjalan".

Memperbarui Visual Studio tidak membantu.

Selesaikan masalah dengan "Tidak ada tes yang cocok dengan filter testcase yang diberikan FullyQualifiedName" dengan menjalankan pembaruan ke versi terbaru untuk paket berikutnya:

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

1

Bagi saya solusinya adalah mengubah pengaturan Pengujian Unit Resharper "Arsitektur platform default" menjadi "x64"

masukkan deskripsi gambar di sini


Ini memecahkan masalah saya dengan proyek .NET Core 3.1 yang menolak untuk melakukan tes di Test Explorer. Tidak ada hal lain yang akan memperbaikinya selain ini.
J_L

1

Bagi saya memulai kembali VS2017 tidak berhasil. Saya harus membersihkan sln kemudian menemukan file dengan tes yang tidak berjalan dan menjalankan file itu saja. Setelah itu saya menjalankan semua dan itu bekerja normal kembali.


1

Saya memiliki versi yang berbeda dari paket nuget NUnit (3.11.0) dan NunitTestAdapter (3.12.0). Ketika saya memperbarui NUnit ke 3.12.0, Visual Studio menjalankan tes.


1

Dalam kasus saya ini berfungsi untuk memperbarui paket nuget MSTest. Dapat mereproduksi masalah ini bahkan pada proyek MSTest kosong dan memperbarui paket berhasil.


1

Bagi saya memiliki properti yang disebut TestContext di kelas dasar menyebabkan perilaku ini. Sebagai contoh:

[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

Saya bisa tahu dari atribut Anda bahwa Anda menggunakan MSTest. Saya memiliki masalah yang sama: tes saya muncul di Test Explorer, tetapi ketika saya akan mencoba menjalankannya (baik dengan memilih Run All atau secara individual memilihnya) mereka tidak akan melakukannya.

Masalah saya adalah bahwa saya telah membuat proyek unit test secara manual dari proyek .NET Standard Class Library. Saya telah menginstal MSTest.TestFrameworkpaket NuGet, tetapi bukan MSTest.TestAdapterpaketnya. Segera setelah saya menginstal paket adaptor, mereka berjalan seperti yang diharapkan.

Tampak jelas dalam retrospeksi, tetapi ketika Anda membuat proyek unit test dari templat, Anda menganggap semua ini sebagai hal yang wajar.


1

Perlu disebutkan bahwa kadang-kadang file NUnit Test Adapter rusak di folder pengguna C: \ Users [Pengguna] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dll pada Windows 10 dan yang menyebabkan Test Explorer berhenti berfungsi sebagaimana mestinya.


1

Saya menggunakan VS2019 dengan .Net 4.7. Saya menginstal ekstensi NUnit v3, dan mengubah pengaturan Tes untuk menggunakan X64. Proyek unit test saya adalah Any CPU (akan berfungsi jika saya mengubahnya ke x64). Sekarang saya bisa men-debug kode saya.


1

Masalah ini juga diamati ketika metode pengujian yang dijalankan melempar StackOverflowException , membuat pelari uji batalkan pengujian yang dijalankan, menghasilkan output 0 tests run.

Untuk menemukan pelakunya dan menyelesaikannya, berikan titik istirahat di awal metode yang dihiasi TestInitialize dan TestMethod , jalankan uji unit dalam mode debug, lanjutkan melangkahi (F10) hingga pengecualian dilemparkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.