Mengapa Visual Studio 2015/2017/2019 Test Runner tidak menemukan tes xUnit v2 saya
UPDATE: Menambahkan 2019; mekanisme integrasi discovery / runner sama dengan tahun 2017 & 2015, jadi hal utama yang bisa salah adalah sama.
Saya telah membaca Mengapa pelari xUnit tidak menemukan pengujian saya, yang mencakup alasan xUnit tidak akan pernah dapat menemukan pengujian Anda tetapi masalah saya berbeda - saya yakin tidak ada yang halus terjadi dengan pengujian saya; (mereka telah bekerja di lingkungan lain, ini tampaknya hanya mesin saya) - Visual Studio Uji Runner di Visual Studio 2015 [Community Edition] hanya tidak menampilkan setiap tes saya. Saya tidak melakukan sesuatu yang menarik; tes menargetkan xUnit.net v2 di Desktop.
Saya telah melihat di jendela Output dan saya tidak melihat apa pun di bawah Test di Tampilkan output dari tab.
Jawaban
Hilangkan pengecualian penemuan dari pertanyaan Anda; pergi ke Jendela keluaran (Ctrl-Alt-O), lalu alihkan keluaran acara dari dropdown (Shift-Alt-S) ke Tes dan pastikan tidak ada pengecualian penemuan
Test | Test settings | Arsitektur prosesor default dapat membantu jika pengujian Anda khusus untuk x86 / x64 dan penemuan memicu pengecualian terkait bit, yaitu bukan AnyCpu
Seperti yang disarankan dalam jawaban ini (berikan suara positif jika teknik ini membantu) menjalankan runner konsol desktop ( instruksi ) dapat menjadi pemeriksaan silang yang baik untuk menghilangkan kemungkinan lain, misalnya file konfigurasi yang rusak: -
packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll>CATATAN
xunit.runner.consolePaket ini tidak digunakan lagi - ketika Anda mendapatkan sesuatu yang bekerja di VS, Anda akan dapatdotnet testmenjalankannya dalam konteks CI juga
Silakan baca dokumentasinya - lengkap, terbaru, termasuk info pemecahan masalah dan membutuhkan PR: -
Catatan penting: Jika sebelumnya Anda telah menginstal xUnit.net Visual Studio Runner VSIX (ekstensi), Anda harus membongkarnya terlebih dahulu. Pelari Visual Studio hanya didistribusikan melalui NuGet sekarang. Untuk menghapusnya, pergi ke Tools > Extensions and Updates . Gulir ke bagian bawah daftar, dan jika xUnit.net diinstal, hapus instalannya. Ini akan memaksa Anda untuk memulai ulang Visual Studio.
Jika Anda mengalami masalah dalam menemukan atau menjalankan tes, Anda mungkin menjadi korban dari cache runner yang rusak di dalam Visual Studio. Untuk mengosongkan cache ini, matikan semua contoh Visual Studio, kemudian hapus folder tersebut
%TEMP%\VisualStudioTestExplorerExtensions. Juga pastikan proyek Anda hanya ditautkan ke versi tunggal dari paket NuGet runner Visual Studio (xunit.runner.visualstudio).
Langkah-langkah berikut berhasil untuk saya:
(Hanya jika Anda mencurigai ada kekacauan serius pada mesin Anda - secara umum kasus yang lebih umum adalah integrasi studio visual belum terpasang)
Lakukan
DEL %TEMP%\VisualStudioTestExplorerExtensionsseperti yang disarankan: -PS> del $env:TEMP\VisualStudioTestExplorerExtensionsInstal Paket NuGet
xunit.runner.visualstudiodi semua proyek pengujianPaket:
.paket\paket add nuget xunit.runner.visualstudio -iAnda harus mengakhiri dengan yang berikut ini di
paket.dependencies:nuget xunit.runner.visualstudio version_in_path: truePerhatikan bahwa
version_in_path: truebit itu pentingNuget: Buka Konsol Manajer Paket (Alt-T, N, O) dan
Install-Package xunit.runner.visualstudio)
Bangun kembali untuk memastikan
xunit.runnerberakhir di direktori keluaranTutup Test Explorer <- ini adalah bagian yang hilang bagi saya
Buka kembali Test Explorer (Alt-S, W, T)
Jalankan Semua tes (Ctrl R, A)
Saya harus mengubah Pengaturan Tes setelah mengubah proyek uji CPU ke x64. Kemudian tes terdeteksi lagi.
Tidak ada solusi di atas yang berfungsi untuk saya (dotnetcore 1.1, VS2017). Inilah yang memperbaikinya:
- Tambahkan Paket NuGet
Microsoft.TestPlatform.TestHost - Tambahkan Paket NuGet
Microsoft.NET.Test.Sdk
Itu adalah tambahan dari paket-paket yang saya instal sebelumnya:
- xunit (2.3.0-beta1-build3642)
- xunit.runner.visualstudio (2.3.0-beta1-build1309)
Instal xunit.runner.visualstudiopaket untuk proyek uji
Ikuti langkah-langkah ini:
- Perbarui Anda
MsTest.TestAdapterdanMsTest.TestFrameworkdll'sdarinugget package manager. - Bersihkan solusi Anda
- Bangun solusi Anda.
Pastikan kelas pengujian Anda terbuka untuk umum .
Saya telah berjuang dengan ini sepanjang sore saat bekerja dengan proyek ASP Core dan xUnit 2.2.0. Solusi bagi saya adalah menambahkan referensi keMicrosoft.DotNet.InternalAbstractions
Saya menemukan ini ketika mencoba menjalankan proyek pengujian secara manual dotnet testyang gagal tetapi melaporkan bahwa InternalAbstractionsitu hilang. Saya tidak melihat kesalahan ini di jendela keluaran pengujian ketika penemuan otomatis gagal. Satu-satunya info yang saya lihat di jendela penemuan adalah kode kembali, yang tidak berarti apa-apa bagi saya pada saat itu, tetapi di belakang mungkin menunjukkan kesalahan.
Ini terjadi pada saya beberapa kali - ketika saya Membersihkan proyek dan Membangunnya lagi cenderung baik-baik saja.
Setelah menghabiskan 2 hari ... tidak satu pun di atas yang berhasil untuk saya. Satu-satunya "solusi" adalah: Buka properti proyek -> Bangun Tab. Kemudian klik tombol Advanced di sudut kanan bawah panel. Ubah "Info Debug:" menjadi "penuh" dan klik OK.
Berikut tangkapan layarnya:
Alasan dalam kasus saya adalah build target tidak sama antara project debugger dan test runner. Untuk menyatukan elemen-elemen itu:
- Tes> Pengaturan Tes> Arsitektur Prosesor Default. lalu pilih X64 atau X86.
- Proyek> (proyek Anda) Properti> Bangun (tab)> target platform.
Setelah keduanya identik, buat kembali solusi Anda, kemudian metode pengujian akan muncul untuk Anda.
Saya menggunakan xUnit 2.2.0.
Masalah saya adalah solusi saya tidak dapat menemukan dll tertentu dan app.configmencoba menyelesaikannya. Kesalahan tidak muncul di jendela keluaran tes di Visual Studio.
Saya dapat mengidentifikasi kesalahan ketika saya menginstal xunit.runner.consoledan mencoba menjalankan tes melalui baris perintah.
Saya dapat memberikan solusi untuk kasus tepi yang saya hadapi beberapa hari yang lalu. Ini tidak akan menjadi solusi yang sesuai dengan semua skenario yang dijelaskan di atas, namun, untuk kasus tepi saya telah memperbaikinya.
Saya memiliki masalah yang sama dengan VS 2017 terbaru (versi 15.5.7) dan XUnit 2.3.1. Paket xunit.runner.visualstudio telah diinstal, namun, pengujian tidak muncul di penjelajah pengujian internal VisualStudio.
Saya sedang mengerjakan proyek warisan yang menargetkan .NET framework 4.5. Namun, dimulai dengan versi 2.2. XUnit tidak mendukung .NET frameworks lebih rendah dari 4.5.2 (lihat Catatan Rilis - XUnit 2.2: 19 Februari 2017
Mengubah kerangka kerja target proyek uji ke versi> = 4.5.2 berhasil untuk saya. Anda tidak perlu mengubah versi proyek yang Anda uji, ini hanya tentang proyek uji itu sendiri.
Saya memiliki masalah yang sama dengan Visual Studio 2019. Baru saja menginstal paket NuGet berikut dan masalah telah terpecahkan.
1). xUnit
2). xunit.runner.visualstudio
3). Microsoft.TestPlatform.TestHost
4). Microsoft.NET.Test.Sdk
Hal ini juga dapat terjadi karena kotak centang build tidak dicentang untuk proyek platform saat ini dalam konfigurasi build. Klik Build | Manajer konfigurasi, lalu pastikan project pengujian memiliki tanda centang di kolom build untuk platform yang Anda gunakan (misalnya 'x86').
Ini pasti solusi yang berhasil untuk saya.
Pastikan bahwa Anda belum menulis pengujian unit Anda di Perpustakaan Kelas Standar 2.0 .NET. Pelari visualstudio tidak mendukung pengujian yang sedang berjalan di pustaka kelas netstandard2.0 pada saat penulisan ini.
Periksa di sini untuk matriks Kompatibilitas Runner Uji:
Mengalami masalah serupa dengan VS tidak menemukan metode pengujian. Dalam kasus saya, saya memiliki kata kunci statis dengan metode tersebut, yang saya hapus dan berhasil.
[TestMethod]
Before: public static void Test1()
After: public void Test1()
Ada satu alasan lain yang dapat menyebabkan Test Explorer tidak menampilkan tes apa pun, dan itu berkaitan dengan .pdbformat file portabel baru yang diperkenalkan dengan Visual Studio 2017 / untuk .NET Core yang dapat merusak beberapa perkakas VS. (Latar Belakang: Lihat laporan bug "Mono.Cecil menyebabkan OutOfMemoryException dengan .csproj PDBs baru" .)
Apakah pengujian Anda tidak ditemukan karena format portabel .pdb(simbol debug) yang baru?
- Buka jendela Output .
- Ubah pilihan drop-down untuk Show output from to Tests .
Jika Anda melihat keluaran seperti berikut (mungkin diulang satu kali untuk setiap pengujian Anda), maka Anda mendapatkan masalah yang dijelaskan dalam jawaban ini:
Exception System.OutOfMemoryException, Exception converting <SignatureOfYourTestMethod> Array dimensions exceeded supported range.
Jika ya, lakukan ini untuk menyelesaikan masalah:
- Buka Properti proyek uji Anda (pilih proyek uji di Solution Explorer dan tekan Alt+ Enter).
- Beralih ke tab Build .
- Klik pada tombol Advanced ... (terletak di bagian paling akhir dari halaman tab itu).
- Dalam drop-down berlabel informasi Debugging , memilih
none,pdb-onlyataufull, tapi tidakportable. Pengaturan terakhir inilah yang menyebabkan tes tidak ditemukan. - Klik OK dan bersihkan & bangun kembali proyek Anda. Jika Anda ingin lebih yakin, buka direktori keluaran proyek pengujian Anda dan bersihkan semua
.pdbfile sebelum membangun kembali. Sekarang tes Anda seharusnya sudah kembali.
Dalam kasus saya, saya memiliki 2 proyek pengujian berbeda dalam solusinya. Tes Proyek 1 dapat ditemukan, tetapi tes Proyek 2 tidak bisa. Saya menemukan bahwa pertama-tama Bongkar Uji Proyek 1, kemudian tutup VS> membersihkan file temp saya> buka kembali solusi> bangun kembali, perbolehkan VS untuk menemukan tes Proyek 2 saya.
Saya berasumsi ada sesuatu yang bertentangan antara dua proyek pengujian dan ini adalah cara tercepat untuk membuat saya aktif dan berjalan dalam beberapa menit. Ketegaran bisa diselesaikan nanti :).
Saya menderita masalah ini untuk waktu yang lama.
Saya memiliki sekitar 100 proyek versi berbeda yang diterapkan di server yang berbeda.
Memperbarui xunit dari 2.2.0 ke 2.3.1 bukanlah solusi karena build gagal di 2.3.1.
Kemudian saya baru saja memperbarui xunit.runner.visualstudio ke 2.3.1 dan semuanya mulai berfungsi dengan baik. Saya telah menggunakan perintah ini di konsol pengelola paket saya untuk memperbarui paket xunit.runner.visualstudio saya
Get-Project ComapanyName.ProjectName.*.Tests | Install-Package xunit.runner.visualstudio -Version 2.3.1
- Tutup semua contoh Visual Studio
- Pergi ke% TEMP% \ VisualStudioTestExplorerExtensions \
- Hapus folder terkait specrun
- Coba lagi
beri tahu saya, terima kasih
Penyebab paling umum bagi saya adalah Visual Studio mencoba menjalankan tes menggunakan arsitektur yang berbeda dari pustaka yang diuji. Sayangnya ada banyak tempat di mana tampaknya ini bisa salah.
Di VS 2017, coba buat file Run Settings, misalnya Default.runsettingsdalam proyek pengujian Anda. Jika lib utama Anda adalah x64, isinya harus:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration>
<TargetPlatform>x64</TargetPlatform>
</RunConfiguration>
</RunSettings>
Kemudian pilih file ini dari Tes -> Pengaturan Tes -> Pilih File Pengaturan Tes.
Kemudian, di bawah Test -> Test Settings, Default Processor Architecture, pilih arsitektur yang benar lagi.
Pastikan untuk Membersihkan dan Membangun seluruh solusi. Anda mungkin perlu menutup dan membuka kembali jendela Test Explorer. Cari kesalahan tambahan di jendela Output -> Test, untuk petunjuk lebih lanjut tentang jenis arsitektur yang salah.
Untuk mengetahui entri Pengaturan Tes tambahan dapat ditemukan di sini .
Terjadi pada saya ketika saya melakukan percobaan berjalan pertama saya dengan IntelliTest di VS 2017.
Terkadang, ketika proyek uji dibuat secara otomatis oleh IntelliTest, rujukan rakitan ke Microsoft.ExtendedReflection( ... \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ Pex \ Microsoft.ExtendedReflection. dll ) hilang. Saat ditambahkan, Tes yang dihasilkan akan muncul di penjelajah tes setelah dikompilasi ulang.
Penafian: ini bukan tentang xunit dengan visual studio 2015, tetapi Visual Studio 2017 dengan aplikasi pengujian unit UWP (MSTest). Saya sampai di utas ini mencari hal yang sama jadi mungkin orang lain akan melakukan hal yang sama :)
Solusi bagi saya adalah memperbarui paket nuget untuk MSTest.TestAdapter dan MSTest.TestFramework. Tampaknya saat Anda membuat aplikasi pengujian unit untuk UWP, Anda tidak secara otomatis mendapatkan versi terbaru.
Masalah saya teratasi dengan menginstal nuget xunit.runner.visualstudio
Dalam kasus saya, saya memiliki beberapa proyek uji dalam solusi yang sama, dan hanya satu proyek yang tidak menampilkan "Test Explorer"
Saya pergi ke "Kelola Paket Nuget untuk Solusi" dengan mengklik kanan pada solusi.
Saya perhatikan di bawah tab "Konsolidasi" ada beberapa paket nuget "Uji" yang tidak sinkron antara proyek-proyek tersebut. Saya mengklik "Instal" dan pengujian saya yang hilang muncul.
Saya mencoba sebagian besar saran di atas dan tidak ada yang berhasil. Dalam kasus saya, saya berada dalam tim dan tes muncul untuk pengembang lain untuk solusi yang sama. Jadi, saya mencoba menghapus folder .vs saya, tetapi tidak berhasil juga.
Saya akhirnya menghapus folder lokal saya sepenuhnya dan mengkloning ulang repo. Itu menyelesaikannya untuk saya.
Inilah solusi yang berhasil untuk kami. Bukan yang terbaik tapi mungkin bisa mendapatkan keuntungan.
Latar Belakang:
- Skrip kami dikembangkan dengan VS 2013 dan menggunakan NUnit VS Adapter 2.1 ..
- Baru-baru ini kami bermigrasi ke VS 2017 dan ketika membuka solusi yang sama - tes tidak akan ditampilkan di Test Explorer
Setelah Dibangun, kita akan melihat pesan ini:
[Informational] NUnit Adapter 3.10.0.21: Test discovery starting
[Informational] Assembly contains no NUnit 3.0 tests: C:\ihealautomatedTests\SeleniumTest\bin\x86\Debug\SeleniumTest.dll
[Informational] NUnit Adapter 3.10.0.21: Test discovery complete
Solusi (sementara):
- Copot Pemasangan NUnit Adapter 3.10 ...
- Instal NUnit VS Adapter 2.1 ..
Sekarang Tes ditampilkan.
Juga periksa apakah file app.config yang benar-benar kosong (benar-benar kosong tanpa markup sama sekali) ada dalam proyek pengujian. Ini adalah penyebab kasus saya.
Dalam kasus saya, saya membuat "Konfigurasi Solusi" baru seperti yang ditunjukkan pada gambar. Jadi ketika saya memilih yang khusus saya sebagai "Prod", itu tidak mengenali TestMehods karena beberapa alasan. Mengubah kembali ke "Debug" memecahkan masalah
Saya tidak tahu apakah beberapa dari Anda juga menggunakan JustMock, tetapi saya harus menonaktifkan profiler di VS 2017 agar deteksi pengujian berfungsi.