Visual Studio 2013 tidak menemukan tes unit

146

Saya punya solusi sederhana dalam visual studio 2013 yang terdiri dari satu proyek web, satu proyek perpustakaan dan satu proyek uji unit. Ketika saya membuka solusi dan mencoba menjalankan unit test mereka tidak ditemukan oleh studio visual. Untuk menjalankan tes saya mencoba untuk pergi ke menu dan pilih Test -> Run -> Jalankan semua tes atau dengan membuka jendela test explorer. Oleh orang-orang untuk metode visual studio tidak menemukan tes apa pun dalam solusi.

Membuat proyek tes unit sederhana pertama dan mencoba menjalankan tes, visual studio tahu menemukan tes dan saya bisa menjalankannya. Kemudian, jika saya membuka solusi visual studio saya sebelumnya sekarang menemukan semua tes. Saya mencoba menyimpan solusi saya tetapi menutupnya dan membuka kembali, tanpa membuat proyek unit test terlebih dahulu, studio visual tidak menemukan tes lagi. Ini adalah perilaku yang sangat aneh sehingga saya tidak tahu mengapa ini terjadi.

Saya dulu bekerja sendirian dalam proyek ini yang menggunakan source control git terintegrasi dengan yayasan tim studio visual. Masalah visual studio tidak menemukan tes unit mulai ketika elemen baru datang ke proyek dan ketika saya harus membuat ulang solusi melalui kontrol sumber online. Sebelum ini, semua tes selalu ditemukan oleh studio visual.

Untuk membuat tes unit saya menggunakan dll Microsoft.VisualStudio.QualityTools.UnitTestFramework dll. Versi visual studio saya adalah: Pembaruan Microsoft Visual Studio Express 2013 untuk Versi Web 12.0.30723.00 3. Versi saya .net framework adalah 4.5.50938.

Semua tes saya seperti ini:

[TestClass] 
public class Service1Test 
{ 
    [TestMethod] 
    public void Test1() 
    {
        Assert.IsTrue(True); 
    } 
}
miguelbgouveia
sumber
2
Apakah ini tes Unit berbasis Async?
Jamie Keeling
Tidak yakin apa masalahnya, tetapi berjalan saat administrator memperbaiki masalah untuk saya.
Sriram Sakthivel
Semua tes unit berbasis sinkronisasi
miguelbgouveia
2
Sudahkah Anda mencoba pelari ujian eksternal (seperti ReSharpers atau NCrunch)? Mungkin instal Anda disadap (jadi instal ulang VS)
Carsten
1
Tak satu pun dari ini memperbaiki masalah bagi saya :( Apa bencana. Saya sudah menyerah NUnit dan saya mengandalkan UnitTestFramework - anehnya masalah yang berlawanan dari OP
Adam

Jawaban:

210

Beberapa hal yang saya perhatikan harus saya lakukan dari waktu ke waktu untuk mendapatkan tes untuk tampil dengan benar.

  1. Jika solusi Anda berada dalam drive yang dilindungi yang Anda perlukan akses administrator untuk membaca / menulis, kadang-kadang hanya sebagian dari tes yang muncul. Jalankan VS sebagai administrator dalam hal itu.

  2. Jika solusi Anda 64 bit, pastikan Uji> Pengaturan Tes> Arsitektur Prosesor Standar diatur ke x64. Terkadang diatur ke x86. Atur ke x64, lalu bangun kembali.

  3. Kadang-kadang hanya me-restart Visual Studio melakukan trik karena penjelajah uji akan mulai lagi.

  4. Jangan lupa untuk benar-benar membangun proyek uji / solusi. (Jika Anda ingin membangun dengan sisa proyek, klik kanan pada solusi Anda> Properties> Configuration Properties> Configuration> centang kotak "Build" untuk proyek pengujian Anda)

  5. Pastikan tes berada di publicbagian kelas tes Anda

AndyG
sumber
34
Saya menyadari jawaban ini agak terlambat, tetapi pencarian Google saya membawa saya ke sini, dan tidak ada yang disebutkan menyelesaikan masalah saya. Akhirnya saya tahu itu # 2 dalam daftar saya, jadi saya ingin meninggalkan pengetahuan itu, ditambah trik lain yang saya ambil dari waktu ke waktu.
AndyG
7
Kombinasi # 2 dan # 3 melakukannya untuk saya. Visual Studio mengeluh tentang sejumlah proyek (non-tes) dalam solusi saya yang dikecualikan dari langkah penemuan tes karena mereka dibangun untuk x86, tapi itu bagus.
Nate Barbettini
4
Saya menemukan bahwa pengaturan saya semuanya benar dan memulai ulang tidak berfungsi. Apa yang memperbaiki masalah bagi saya hanyalah membangun solusinya. Saya tahu ini mungkin tampak bodoh tetapi tidak jelas bahwa itu perlu; Saya belum melihat satupun dokumen resmi menyebutkan langkah ini.
user1807768
6
Saya memiliki masalah yang sama di VS2015. # 2 memperbaiki masalah untuk saya.
mcolegro
2
Saya tidak tahu mengapa orang membayar begitu banyak uang untuk suatu produk yang sering gagal. Saya harus memutakhirkan proyek saya hingga 2015 dan melakukan # 3 2 kali sebelum menemukan tes saya.
Matius Hoggan
81

Jika Anda menggunakan NUnit, pastikan untuk mengunduh NUnit Adapter terlebih dahulu.

Buka Alat → Ekstensi dan Pembaruan… → Online → cari "NUnit Test Adapter".

Farukh
sumber
2
Saya menggunakan UnitTests dari Microsoft. Dalam hal ini saya kira itu tidak perlu menginstal apa pun.
miguelbgouveia
1
Ini melakukannya untuk saya - sangat wajib.
Matas Vaitkevicius
Itu memperbaikinya bagi saya. Terima kasih.
jjthebig1
Diputakhirkan sebagai memang menyelesaikan masalah tetapi apakah perlu memiliki adaptor NUnit atau Visual Stdio harus bekerja dengan NUnit out-the-box.
Owain Glyndŵr
Anda adalah tuhan tuan.
Nox
61

Pastikan kelas tes Anda publicsehingga dapat ditemukan. Dan jika Anda mereferensikan kelas lain, pastikan hal yang sama.

Juga, kadang-kadang jika Anda tidak memiliki Meminta atau Anda tidak mendekorasi tes dengan [TestMethod], tes mungkin tidak dikenali.

2 hal lagi: 1) Tes unit Async bertindak lucu di terbaik, dan tidak ada sama sekali di terburuk. Lihat artikel ini oleh Stephen Cleary dan simpan dari sana jika itu menarik minat Anda.

2) Jika Anda menggunakan NUnit dan Anda mengalami masalah yang sama, ingatlah itu [TestCase]untuk Nunit, bukan[TestMethod]

Setelah mengatakan hal di atas, inilah artikel yang saya posting di proyek kode, dengan keduanya MSTest& NUnit, jika Anda ingin mencobanya dan pastikan Anda tidak melewatkan apa pun.

Noctis
sumber
1
Semua tes saya seperti ini: [TestClass] kelas publik ServicesUtilsTest {[TestMethod] public void Test1 () {Assert.IsTrue (True); }}
miguelbgouveia
ini tidak terlalu jelas. Masukkan ke dalam blok kode di pertanyaan Anda, sehingga dapat dipahami :)
Noctis
Semua tes saya adalah untuk kode sinkronisasi, dan saya pikir masalah saya bukan pada kode unit test tetapi lebih di studio visual kadang-kadang tidak menemukan tes.
miguelbgouveia
Coba gunakan ini sebagai gantinya:using Microsoft.VisualStudio.TestTools.UnitTesting;
Noctis
1
Saya sudah menggunakan Microsoft.VisualStudio.TestTools.UnitTesting. Namespace ini didefinisikan dalam dll Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
miguelbgouveia
28

Saya memiliki masalah yang sama tetapi tidak ada solusi lain yang berhasil. Ternyata saya menggunakan kerangka NUnit 3 dengan 2 adaptor.

Jika Anda menggunakan NUnit 3, buka Extensions and Updates dan instal NUnit3 Test Adapter.

jujur
sumber
Itu mengatakan ini dalam deskripsi paket Nuget. Tetapi jika Anda seperti saya dan tidak membaca, saya berharap ini akan membantu: "Paket ini termasuk kerangka kerja NUnit 3.0, yang dirujuk oleh tes Anda. Anda harus menginstal versi 3.0 dari nunit- program konsol atau pelari pihak ketiga yang mendukung NUnit 3.0 untuk menjalankan tes. Pelari yang dimaksudkan untuk digunakan dengan NUnit 2.x tidak akan menjalankan 3.0 tes dengan benar. "
Frank
Dalam kasus saya, saya tahu itu ada hubungannya dengan pembaruan NUnit3, tetapi satu set tes saya berlalu dan yang lainnya tidak terlihat. Setelah diperiksa lebih dekat, ada banyak pengecualian dalam output, meskipun semua tes lulus.
Rich Shealer
Ini juga terjadi pada saya. Saya telah menjalankan nuget "pembaruan-paket" tanpa disadari diperbarui dari NUnit 2.x ke 3.x.
Jens
Saat ini NUnit 3.0 Test Adapter tidak dapat ditemukan melalui NuGet (lihat NUnit 3.0 Wiki ). Itu masih bisa diinstal sebagai ekstensi.
vauhochzett
1
Terima kasih banyak, Frank. Itu memecahkan masalah saya. Sekarang saya dapat melihat hasil tes unit di jendela konsol :)
santosh kumar patro
12

Saya mengalami masalah ini dari waktu ke waktu. Yang berhasil bagi saya adalah mematikan Visual Studio dan membuka folder:

%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache

dan hapus kontennya.

Setelah Anda membuka Visual Studio dan memuat proyek Anda lagi, Test Explorer akan memuat kembali tes Anda

Mariusz Gorzoch
sumber
Bagi saya itu tidak berhasil. Saya menggunakan Visual Studio 2013 Express dengan pembaruan 5 menginstal baru-baru ini. Masih tidak ada tes unit yang muncul.
miguelbgouveia
Ini juga pekerja untuk saya. Bahkan bekerja tanpa me-restart studio visual. Berjam-jam akhirnya sia-sia.
Stephan Ryer
Direktori ini tidak ada lagi di VS2017.
Noel Widmer
Terima kasih ini bekerja untuk saya untuk semua folder ini yang dapat memiliki versi berbeda tergantung pada instalasi studio visual seperti untuk saya%LocalAppData%\Microsoft\VisualStudio\16.0_03b7a93c\ComponentModelCache
Ravi Kumar Mistry
12

Pengguna XUnit mungkin melihat jendela Test Explorer tidak lagi mencantumkan tes apa pun. Untuk membuat tes dapat ditemukan kembali coba tip penting ini , disorot di bawah ini.

Jika Anda mengalami masalah dalam menemukan atau menjalankan tes, Anda mungkin menjadi korban cache runner yang rusak di dalam Visual Studio. Untuk menghapus cache ini, matikan semua instance Visual Studio, lalu hapus folder% TEMP% \ VisualStudioTestExplorerExtensions. Pastikan juga proyek Anda hanya ditautkan dengan satu versi paket NuGet pelari Visual Studio (xunit.runner.visualstudio).

Ketik TEMP untuk menemukan folder target

SushiGuy
sumber
Ini tidak berhasil untuk saya. Test explorer tidak menemukan tes saya dan sejauh yang saya tahu saya tidak melakukan kesalahan dan saya sudah mencoba beberapa solusi di sini tanpa hasil.
Skychan
Menggunakan MsTestV2 - ini adalah satu-satunya hal yang memperbaiki masalah
Nathan
5

Untuk googler masa depan saya memiliki skenario langka yang menyebabkan ini.

Di kelas tes dasar saya, saya memiliki properti bernama TestContext. Ini mengganggu properti TestContext milik MSTest yang menyebabkan semua tes saya disembunyikan dari VS / Resharper kecuali satu (yang tidak mewarisi dari pangkalan).

Adam Behrle
sumber
1
menangkap saya juga! saya lupa membuat properti konteks tes public.
escape-llc
4

bagi saya itu mengubah 'konfigurasi solusi' ke Debug (bukan Release).

zook2005
sumber
4

Masalah saya adalah karena metode unit test saya tidak batal , dan menerima parameter.

alansiqueira27
sumber
Dari semua hal .... Ini adalah masalah saya dan params sedikit masuk akal. Lagi pula, apa yang akan diketahui oleh sistem uji untuk lulus? Solusinya adalah membuat metode pengujian di mana Anda secara manual memanggil metode yang ingin Anda uji. Jika Anda menguji proyek WebAPI dan memiliki Get with params, Anda masih harus memiliki panggilan Get yang cocok tetapi tidak akan muncul di explorer.
MetalPhoenix
4

Saya telah menemukan bahwa metode unit test ditandai sebagai async voidtidak ditemukan oleh VS Test Explorer. Ini tampaknya karena VS tidak akan memiliki cara untuk menunggu tes selesai dan memutuskan apakah itu berhasil atau tidak. Jika Anda benar-benar perlu memiliki metode pengujian untuk menjalankan secara tidak sinkron, maka dapatkan untuk mengembalikan Tugas sebagai gantinya async Task. Saya menemukan bahwa ini memperbaiki masalah saya.

monster kue
sumber
1
Ini tidak menjawab pertanyaan di atas, tetapi justru inilah masalah yang saya coba selesaikan. Jadi Anda mendapat kecelakaan +1 :) Terima kasih banyak!
CF
3

Cobalah membangun semua proyek sebagai MSIL (CPU Apa Saja) alih-alih x86 / x64. Anehnya, bekerja untuk saya

Alfons
sumber
Saya hanya harus membangun proyek Uji menggunakan CPU Apa saja, proyek lainnya tetap x64
Eduardo Brites
1
Secara teknis, C # / VB.NET selalu dikompilasi ke MSIL. Pengaturan proyek "x86", "x64" atau "Any CPU" (dan, dalam versi yang lebih baru, "Lebih suka 32-bit") hanya ditandai di bagian atas EXE / DLL. Point masih berdiri; NUnit tidak akan mendaftar tes yang tidak dapat dimuat ke mesin eksekusi, karena itu ditandai sebagai memerlukan arsitektur tertentu untuk dijalankan.
Jonathan Gilbert
3

Sementara solusi AndyG bekerja, solusi yang lebih tahan lama adalah dengan mengatur variabel lingkungan PreferredToolArchitecture menjadi "x64", baik dengan:

Cara membuat Visual Studio menggunakan toolchain amd64 asli

atau dengan:

  • Panel Kontrol | Sistem dan Keamanan | Sistem | Pengaturan Sistem Lanjut | Variabel Lingkungan
  • PreferredToolArchitecture = x64
  • DefaultToolArchitecture = Native64Bit
  • PROCESSOR_ARCHITECTURE = x64
  • ProcessorArchitecture = x64
Kevin Johnsrude
sumber
2

Saya menghadapi masalah yang sama dan saya ingat, sekali lagi (situasi ini terjadi sebelumnya), bahwa memilih "Platform Campuran" pada menu solusi platform berfungsi, serta jawaban lainnya.

Jeferson
sumber
Tapi di mana menu solusi platform? Apakah itu di Visual Studio? Saya menggunakan Visual Studio Express 2013 untuk Web dan saya tidak dapat menemukan menu itu.
miguelbgouveia
2

Saya berhasil menambahkan milik saya sebagai

public static void TestMethod1(){}

mulai bekerja setelah saya menghapus statis ....

Arthur Russell Fox
sumber
2

Pergi ke pengelola paket Nuget dan unduh Nunit Adapter sebagai berikut. masukkan deskripsi gambar di sini

Debendra Dash
sumber
1

buka menu proyek> Pengelola Konfigurasi periksa platform proyek pengujian Anda cocok dengan sisa proyek dan periksa untuk membangun lalu membangun kembali.

pengguna5224229
sumber
1
Saya tidak memiliki opsi Manajer Konfigurasi di menu proyek saya. Saya hanya dapat menemukan opsi properti proyek. Saya sangat platform proyek unit test dan itu sama dengan proyek lain. Jadi, bagi saya solusi ini tidak berhasil.
miguelbgouveia
Tentukan "cocok dengan sisa proyek"
amalgamate
1

Hanya berlari ke ini juga karena saya tidak melihat kasus serupa yang mirip dengan milik saya.

Dalam .csprojfile proyek pengujian saya, privasi referensi NUnit diatur ke False:

<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
  <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
  <Private>False</Private>
</Reference>

Setelah saya mengatur <Private>untuk Trueitu bekerja.

Kevin Giszewski
sumber
1

Anda hanya perlu menginstal paket ini saja:

NUnit TestAdapter NUnit TestAdapter

Sandy_Vu
sumber
Saya tahu bahwa menggunakan kerangka kerja unit test lain akan menyelesaikan masalah saya. Tetapi jika saya ingin terus menggunakan kerangka Microsoft Unit Test yang bukan solusi.
miguelbgouveia
1

Saya memiliki masalah yang sama persis.

Itu karena versi NUnit yang tidak kompatibel yang saya tambahkan ke proyek saya (3.2.0) dan Test Adapter yang telah saya instal (2.0.0).

Untuk memperbaikinya, gunakan "Alat> Ekstensi dan Pembaruan" dan cari NUnit3 Test Adapter, itu menemukan tes saya setelah itu.

Bersulang

Francis Smith
sumber
Saya tidak menggunakan NUnit.
miguelbgouveia
1

Katakan saja demi argumen bahwa Anda perlu menggunakan arsitektur X64 pada proyek pengujian Anda agar dependensi dapat dibangun dengan benar (seperti dalam kasus saya). Anda mungkin perlu memodifikasi Arsitektur Prosesor Default di bawah menu Tes - Pengaturan Tes . Pengaturan ini ke X64 memungkinkan penjelajah pengujian saya untuk menemukan tes saya menggunakan Microsoft.VisualStudio.TestTools.UnitTesting.

Dominic Hartjes
sumber
1

Maaf telah menambah daftar panjang, tapi saya punya masalah yang sama sekali berbeda. Pertama, saya ingin menyebutkan bahwa saya menemukan masalah saya ketika mengklik 'Jalankan Semua' di Test Explorer dan kemudian menonton jendela output build di Visual Studio. Anda harus secara aktif menontonnya, karena setelah itu pesannya hilang.

Adapun masalah, sepertinya selama pemindaian tes, DLL akan dimuat dan jenis tesnya disebutkan. Ini menyebabkan referensi dimuat dan jika ada kegagalan terjadi selama proses ini, tes tidak akan ditampilkan di explorer. Saya punya dua masalah yang mencegah tes DLL agar berhasil dimuat:

  • Masih ada pengalihan mengikat yang tersisa di file konfigurasi (pengalihan ke versi yang lebih rendah versi NHiberate daripada apa yang dirujuk dalam proyek uji).
  • Referensi perakitan yang saling bertentangan (referensi level 2 tidak dapat dimuat). AsmSpy adalah alat yang hebat untuk berburu ini.
Martijn Evens
sumber
Saya menghadapi masalah yang sama, mengalami kesulitan dalam menemukan dll yang tidak memuat ....
amarnath chatterjee
1

Jika Anda memuat solusi Visual Studio (VS 2015 Community dalam kasus saya) dari jaringan berbagi atau direktori Dokumen Saya yang merupakan bagian dari berbagi , Anda akan masuk ke masalah ini. Saya memecahkannya dengan memindahkan solusi dan proyek yang mendasarinya ke folder lokal.

Ton Snoei
sumber
1

Setelah menghabiskan 2 hari ... tidak ada yang di atas bekerja untuk saya. Satu-satunya "solusi" adalah: Buka properti proyek -> Build Tab. Kemudian klik tombol Advanced di sudut kanan bawah panel. Ubah "Info Debug:" menjadi "penuh" dan klik OK.

Berikut adalah cuplikan layar: masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sinimasukkan deskripsi gambar di sini

curiousBoy
sumber
0

Saya menemukan masalah yang sama. Dan diselidiki dan menemukan bahwa dll itu tidak membangun, dan dimasukkan ke dalam folder yang tepat. segera setelah saya mengubah konfigurasi saya mereka muncul. - Opsi membangun Proyek, folder apa yang harus digunakan? - konfigurasi menu membangun entri membangun, mereka harus diperiksa.

yang memperbaikinya bagi saya.

kfn
sumber
Bagi saya, dll untuk tes juga tidak dibuat karena visual studio tidak menemukan tes yang ditentukan. Saya menggunakan Visual Studio Express dan saya tidak memiliki entri menu Bangun. Tetapi di manajer konfigurasi saya, saya memiliki semua opsi membangun diperiksa. Jadi, saya pikir itu bukan masalah untuk kasus saya.
miguelbgouveia
@miguelbgouveia, ini sebaliknya - VS membangun DLL, dan kemudian memindai untuk tes. Jadi, jika Anda tidak memiliki DLL proyek uji, Anda pasti tidak akan menemukan tes.
0

Untuk Visual Studio 2013.5, membersihkan direktori \ TestResults dalam solusi membantu. Visual Studio merusak file mdf di mana ia menyimpan tes yang ditemukan, sehingga mencegah ditemukannya tes unit.

MartijnK
sumber
1
Ada dalam solusi proyek Anda. Klik kanan file proyek Anda di Solution Explorer -> Buka Folder di File Explorer. Buka satu direktori dari sana dan hapus direktori / TestResults. Anda mungkin harus mematikan Visual Studio untuk menghapus semuanya. Ini akan membangun kembali direktori pada saat proyek dibuka.
MartijnK
0

Pastikan semua proyek Anda berjalan dengan konfigurasi yang sama. Di bawah Properties proyek Anda => Debug => Platform dalam daftar drop-down pilih platform yang sesuai (bagi saya itu adalah "CPU Apa Pun") sebagaimana ditentukan pada proyek Anda yang lain.

Roni
sumber
0
  • Saya tahu bahwa unit test tidak ditemukan jika solusinya tidak dibangun, jadi itu adalah sesuatu untuk dicoba (Build the solution), tetapi solusi itu seperti help desk yang menanyakan apakah komputer Anda terhubung ...
  • Setelah pembangunan kembali yang bersih tidak memperbaiki masalah bagi saya, menjalankan pembangunan batch penuh tidak memperbaikinya.
menggabungkan
sumber
0

Punya masalah yang sama; tes tiba-tiba berhenti ditemukan.

Nunit Test Adapter entah bagaimana menjadi tidak aktif. Mengklik mengaktifkan di manajer ekstensi memperbaikinya untuk saya.

Heather
sumber
0

Saya memiliki masalah yang sama sampai saya menyadari saya membuat kesalahan cut / paste dan tinggalkan [Test Method]sebelum tes.

forforf
sumber
Itu sudah terjadi pada saya. Tetapi dalam hal ini mereka bukan itu masalahnya.
miguelbgouveia