Tes Unit tidak ditemukan di Visual Studio 2017

213

Saya telah berjuang dengan VS 2017 sejak saya menginstalnya. Sekarang tampaknya Tes Unit hanya akan berjalan dari baris perintah "tes dotnet."

Proyek saya adalah .NET Core 1.1.1. Saya telah menginstal SDK dan kerangka kerja untuk 1.1.1.

Saya telah mencoba sampel di MSDN ( https://msdn.microsoft.com/en-us/library/ms182532.aspx ) yang juga gagal dengan cara yang persis sama.

Semua paket NuGet untuk pengujian dan proyek utama adalah terkini. Dan baik proyek uji maupun proyek utama dibuat tanpa kesalahan. Tes berhasil dijalankan dari baris perintah.

Adakah yang mendapat Tes Unit untuk dijalankan di VS 2017, jika ya, bagaimana?

Terima kasih, John


Perbarui - Perpanjang

Berikut adalah contoh proyek pengujian sederhana yang tidak berfungsi pada GitHub . Ini adalah contoh dengan xUnit tetapi saya telah mencoba NUnit dan visual studio yang dibangun dalam tes MS. Tidak peduli pengujian apa atau perubahan apa yang saya lakukan, saya tidak bisa mendapatkan pelari uji VS untuk menemukan tes apa pun.

Apa yang saya coba

  • Menghapus file cache uji VS DEL %TEMP%\VisualStudioTestExplorerExtensions
  • Mulai ulang VS
  • Closing / Opening test explorer
  • untuk xUnit diinstal Microsoft.DotNet.InternalAbstractions( lihat posting SO )
  • untuk NUnit memastikan adaptor diinstal dan versi yang sama (3) sebagai paket NUnit
  • test -> test settings -> default processor architecture diatur ke x86

Pertanyaannya
Adakah yang bisa tolong berikan contoh kerja solusi .Net Core 1.1.0 di VS2017 (file proyek .csproj) di mana penjelajah uji VS berhasil menemukan unit test ATAU tunjukkan saya masalah dalam contoh yang diberikan.

John Pezzanite
sumber
Saya menemukan bahwa VS2017 tidak menginstal semua paket yang diperlukan. Ketika saya mencoba untuk memindahkan MonoGame saya dari PC lama ke yang baru dengan windows 10 dan VS 2017 yang baru diinstal, ia mulai melempar kesalahan aneh tentang paket yang hilang. Setelah menginstal VS2015 bersama dengan VS2017 semua masalah hilang. Mungkin mencoba untuk menginstal VS2015 tambahan.
Mateusz
2
Cobalah untuk menginstal paket Tes dengan pemasang Visual Studio
Markiian Benovskyi
Saya sedang mencari apakah VS 2017 memiliki semua variabel lingkungan yang ditetapkan dengan benar.
John Pezzanite
1
Untuk NUnit, Anda harus menggunakan paket NuGet untuk adaptor dan harus 3,8.0-alpha1 atau lebih baru.
Rob Prouse
2
Dalam kasus saya, itu hanyalah keberadaan app.configfile dalam proyek pengujian saya: stackoverflow.com/a/47497668/67824 .
Ohad Schneider

Jawaban:

189

Dalam kasus saya, ternyata saya hanya perlu memutakhirkan adaptor pengujian dan kerangka kerja pengujian saya. Selesai

Contoh menggunakan Manajer Paket NuGet:

masukkan deskripsi gambar di sini

Katalisator Berkualitas
sumber
4
Ini membantu saya juga! Perhatikan bahwa Anda dapat "Mengelola Paket Nuget" pada tingkat solusi dan melakukan ini untuk semua proyek di mana ini diperlukan. Anda mungkin kemudian mendapatkan kesalahan "referensi ambigus" - untuk ini, cukup hapus DLL lama (Microsoft.VisualStudio.QualityTools.UnitTestFramework) dari referensi
Prashanth Subramanian
48
Hal-hal ini haruslah ekstensi dari Visual Studio, bukan paket NuGet.
Jaider
1
Kami memiliki banyak proyek MSTest lama, dan saya tidak tahu itu pindah ke paket NuGet. Ini menyelesaikannya untuk saya juga, awalnya mengira itu adalah bug dengan rilis ReSharper yang lebih baru sampai saya menyadari VS Test Explorer juga tidak dapat menemukan tes saya.
David Anderson
1
Saya melakukan hal yang persis sama dengan yang dinyatakan oleh jawaban ini. Dalam solusi VS2017 saya, saya menambahkan proyek MSTest, menambahkan beberapa tes, tetapi membangun solusi akan menghasilkan: Tes Discover selesai: 0 ditemukan. Jadi, untuk proyek uji, di NuGet Package Manager (Anda juga dapat melakukannya di tingkat solusi), saya memperbarui MSTest.TestAdapter dan MSTest.TestFramework, baik dari v1.1.18 hingga v1.2.0. Lalu, setelah melakukan build, pengujian saya sekarang muncul di Test Explorer.
Kershaw
1
Bekerja sangat baik untuk saya, saya harus pergi ke manajer paket nuget di VS2017 untuk proyek pengujian tertentu dan cukup memperbarui berbagai paket yang saya suka nunit dll kemudian membangun> membangun kembali dan semuanya baik-baik saja.
Tahir Khalid
126

Ini hanya bekerja untuk saya (tidak tahu apakah ini adalah hasil dari perubahan ruang kerja yang merusak sesuatu):

Menghapus file cache uji VS di% TEMP% \ VisualStudioTestExplorerExtensions dan restart VS2017.

PmanAce
sumber
4
Ini berhasil sekali, bukan sesudahnya. Apa (kali ini) memperbaikinya bagi saya adalah menghapus folder TestResults dan bin / obj (bersama dengan pembersihan direktori temp ini)
icesar
24
Siapa pun yang bertanya-tanya di mana %TEMP%- bawa jendela perintah dan ketikecho %TEMP%
mike123
21
Folder tidak ada di temp: /
Douglas Gaskell
jadi apa penyebab perilaku seperti itu?
Mykhailo Seniutovych
1
Cara termudah untuk mengakses% TEMP% adalah dengan memenangkan + R dan mengetik% TEMP%
PontiusTheBarbarian
58

API untuk adapter uji untuk .NET Core berubah dengan rilis Visual Studio 2017 dan perpindahan dari project.jsonformat ke csprojformat. Ini membuat dotnet-test-*adapter yang ada seperti dotnet-test-nunitusang.

Adaptor telah diperbarui, tetapi cara Anda mengatur dan menjalankan tes di Visual Studio atau pada baris perintah dengan dotnet testmemerlukan referensi yang berbeda di proyek pengujian Anda. Waspadalah terhadap dokumentasi apa pun yang Anda temukan bahwa paket referensi dalam dotnet-test-*format karena sudah usang.

Pertama, proyek pengujian Anda harus menargetkan platform tertentu, baik .NET Core atau .NET Framework. Itu tidak dapat menargetkan .NET Standard bahkan jika kode yang Anda uji adalah .NET Standard. Ini karena target pengujian menunjukkan platform mana yang akan menjalankan tes. .NET Standard seperti PCL (Portable Class Library) yang dapat dijalankan pada banyak platform.

Selanjutnya, Anda perlu menambahkan referensi Microsoft.NET.Test.Sdk, kerangka uji pilihan Anda dan adaptor uji yang kompatibel. Untuk NUnit, referensi Anda akan terlihat seperti ini,

<itemgroup>
    <packagereference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></packagereference>
    <packagereference Include="NUnit" Version="3.7.1"></packagereference>
    <packagereference Include="NUnit3TestAdapter" Version="3.8.0"></packagereference>
</itemgroup>

Sebuah komentar di atas menyebutkan menambahkan,

<ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

Ini tidak sepenuhnya diperlukan, tetapi dapat membantu. Itu ditambahkan secara otomatis ke semua proyek unit test oleh Visual Studio untuk membantunya dengan cepat menemukan proyek dengan tes.

Jika tes Anda tidak muncul di Visual Studio, hal pertama yang harus dicoba adalah menutup solusi Anda dan kemudian membukanya kembali. Tampaknya ada bug di Visual Studio yang tidak mendeteksi perubahan pada proyek saat Anda mengeditnya.

Untuk informasi lebih lanjut, lihat Menguji .NET Core dengan NUnit di Visual Studio 2017

Rob Prouse
sumber
2
Menargetkan .NET Framework daripada .NET Standard bekerja untuk saya. Terima kasih.
Ben Griswold
7
Referensi Microsoft.NET.Test.SDK tersebut tidak ada dalam proyek saya dan tidak ada indikasi di mana pun yang mengandalkannya untuk ditampilkan. Menambahkannya melalui konsol nuget dan semuanya mulai berfungsi. Terima kasih untuk daftar referensi!
GWhite
Saya harus menyalin folder ini dari rekan kerja ke direktori temp saya dan restart VS:% TEMP% \ VisualStudioTestExplorerExtensions \ MSTest.TestAdapter.1.1.18
Heiner
Bagaimana saya bisa menguji proyek netstandard 2.0 jika saya mengubah Target Framework saya? Saya tidak dapat mengkompilasi lagi karena proyek netstandard2.0 tidak dapat dirujuk oleh proyek yang menandai net46
Jerome2606
1
Ini berhasil untuk saya. Terima kasih untuk solusi terperinci.
Talha Ashfaque
42

Saya memiliki masalah yang sama dan mulai bekerja dengan melakukan hal berikut ..:

  • Pertama tutup semua instance Visual Studio yang terbuka dan hapus folder ini:% TEMP% \ VisualStudioTestExplorerExtensions. ( Menjalankan tes dengan Visual Studio )
  • Pergi ke manajer paket Nuget Anda dan instal Microsoft.NET.Test.Sdk (15.3.0-preview-20170425-07) pertama dan kemudian instal xunit.runner.visualstudio (2.3.0-beta1-build1309). Lihat screenshot Nuget terlampir untuk melihat semua paket yang harus saya instal untuk mendapatkan VS 2017 terbaru untuk mendeteksi tes saya.Cuplikan Nuget
Sanchal Kunnel
sumber
35
Menghapus % Temp% \ VisualStudioTestExplorerExtensions sudah cukup bagi saya.
Juan Pablo Gomez
Yap. Hanya menghapus itu dan memulai ulang VS memperbaikinya.
Juan Carlos
Adakah yang tahu apa yang menyebabkan ini? Saya sudah mengalami hal itu dua kali pada saya sekarang, tetapi menghapus folder itu dan memulai kembali VS berfungsi. Ini aneh.
RubyHaus
@PmanAce - Sebenarnya, benar. Saya menggunakan dua instance TFS yang berbeda (satu per proyek), sehingga ruang kerja berubah secara otomatis ketika saya beralih proyek.
RubyHaus
menghapus folder, dan menambahkan nuget Microsoft.NET.Test.Sdksepertinya berhasil untuk saya .. terima kasih StackOverflow. (.NET Framework WebApi 2 solusi)
bkwdesign
40

Lupa membuat publik kelas uji mencegah metode pengujian di dalam ditemukan

Saya memiliki proyek xUnit default dan menghapus sampel UnitTest1.cs, menggantinya dengan kelas uji pengontrol, dengan beberapa tes, tetapi tidak ada yang ditemukan

Singkatnya, setelah memperbarui paket xUnit, Test.Sdk, xUnit.runner dan membangun kembali proyek, saya mengalami galat build:

Kesalahan xUnit1000 Kelas uji harus publik

Untungnya versi yang diperbarui melemparkan pengecualian ini untuk membuat saya kesulitan

Memodifikasi kelas uji agar masalah publik diperbaiki

kidroca
sumber
6
tidak yakin mengapa turun memilih, tetapi sebelum kopi pagi saya 100% ini diabaikan oleh saya.
Andrei
1
Mencoba semua jawaban lain untuk pertanyaan / masalah ini dan inilah yang akhirnya berhasil!
FastTrack
3
Yang itu sangat memalukan tapi .. terserahlah. Hal yang lucu adalah bahwa jika Anda membuat case test suite di VS2017 itu tidak akan menghasilkan publickelas, tetapi hanya kelas, sehingga tidak akan menemukannya sampai Anda menambahkan publicpengenal.
briosheje
tentu saja. bad - mstest saya harus memiliki fitur ini.
Crismogram
10

Dalam kasus saya, saya menargetkan proyek tes untuk x64Arsitektur dan pengaturan tes Arsitektur (test-> Default Processor Architecture) diubah diatur ke x86. Mereka tidak cocok.

Setelah mengatur kembali pengaturan tes Arsitektur ke x64dan membangun kembali semua tes ditemukan lagi.

MiguelSlv
sumber
di vs2017 pengaturan dalam dari menu Uji -> Pengaturan Tes -> Arsitektur Prosesor Default
IcyBrk
8

Saya mengalami kesulitan dengan VS 2017 menemukan UnitTest saya juga. Bukan masalah persis yang ditanyakan John - tetapi ini adalah hasil pertama di google yang saya cari, jadi saya ingin membagikan masalah saya.

Saya punya solusi warisan yang kembali dari VS2010 melewati VS2013, VS2015. Sekarang di VS2017 tampaknya ruang nama untuk [TestMethod]Atribut telah berubah.

Sebelum digunakan

Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0

Saya membuat Test.dll baru di proyek dan yang digunakan secara default

Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0

Jadi solusi saya adalah membuat proyek UnitTest baru dari dalam VS2017. Mungkin mengubah referensi perakitan untuk proyek uji lama akan berhasil juga. Dengan referensi baru VS2017 menemukan unit test tersebut.

hartmape
sumber
Sayangnya bahkan proyek unit test baru tidak memiliki tes itu muncul untuk saya: /
Douglas Gaskell
7

Jangan membaca artikel yang ketinggalan zaman di bawah MSDN. Materi yang relevan .NET Core berada di bawah docs.microsoft.com

https://docs.microsoft.com/en-us/dotnet/articles/core/testing/

Secara umum, Anda memerlukan aplikasi .NET Core console untuk memuat unit test case.

Lex Li
sumber
Terima kasih banyak, Lex. Jika artikel ini benar, satu-satunya cara untuk menguji .NET Core adalah dari baris perintah - sehingga kehilangan semua integrasi VS yang kami miliki dengan menjalankan tes di VS 2015. Apakah saya benar dalam hal ini?
John Pezzanite
Apakah Anda menggunakan xUnit.net atau MSTest?
Lex Li
@JohnPezzanite Anda harus menunjukkan lebih banyak dari apa yang Anda lakukan (mungkin repo GitHub jika memungkinkan). Saya punya proyek di GitHub yang bekerja dengan sempurna, dan banyak lainnya juga.
Lex Li
Ikuti contoh di baris yang saya berikan. Saya sudah mencobanya dengan standar .NET dan .NET Core, dengan unit test Microsoft seperti pada contoh dan dengan xUnit. .NET standar terintegrasi dengan VS 2017 sementara .NET Core hanya akan berjalan dari baris perintah. Tetapi saya mengulangi apa yang telah saya nyatakan di atas. Kedengarannya seperti Microsoft telah menghapus semua bentuk .NET Core unit uji integrasi VS 2017.
John Pezzanite
@JohnPezzanite menguji GitHub.com/lextm/sharpsnmplib dan solusi NetStandard-nya.
Lex Li
6

Bagi saya masalah adalah saya keliru menempatkan testcases di kelas internal

[TestClass]
  internal class TestLib {
}

yang menyebabkan testcases tidak teridentifikasi.

TARJU
sumber
5

Pastikan Anda menggunakan Microsoft.NET.Test.Sdk yang benar:

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />

Jangan gunakan pra-rilis. Atau Anda harus mengubah ke aplikasi konsol (bukan perpustakaan). Saya memiliki masalah yang serupa, tetapi dengan rilis terbaru (15.0.0) mulai berfungsi kembali.

Anda juga harus menambahkan:

  <ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
  </ItemGroup>

tapi saya pikir itu tidak perlu.

Alex Altotsky
sumber
File apa ini berada? Saya dapat menemukan bagian "Sertakan Layanan" dalam file proyek (* .csproj) saya tetapi tidak pada PackageReference.
Chris Bennet
@ChrisBennet di file * test.csproj Anda.
Evgeni Nabokov
1
@ evgeni-nabokov benar. Semua perubahan ini ada dalam file [proyek] .test.csproj. Klik kanan pada proyek dalam solusi dan pilih "Edit [proyek] .test.csproj" Lihat contoh di: github.com/RenetConsulting/angularcore.net/blob/master/Business/…
Alex Altotsky
5

Saya tahu bahwa OP telah mencantumkan ini di daftar periksa, tetapi mudah untuk mengabaikan titik itu saat melakukan instalasi bersih Visual Studio 2017 dan menyiapkan proyek baru. Selain dari templat proyek NUnit dan NUnit Framework kita perlu menginstal adaptor NUnit secara terpisah, misalnya menggunakan perintah NuGet Install-Package NUnit3TestAdapter -Version 3.9.0. Setelah itu Visual Studio Community 2017 mulai menemukan unit test tanpa masalah.

Marcin Tarsier
sumber
1
Ini membantu saya!
YvesR
OMG, yang ini lakukan untukku. Jika saya bisa membasahi Anda dengan hadiah, saya akan melakukannya.
Ash
Ini adalah satu-satunya solusi yang berhasil buat saya, terima kasih!
Vadim Tofan
5

Dalam kasus saya, Explorer Tes tidak dapat menemukan tes saya setelah saya memindahkan proyek ke solusi baru.

Jawabannya sederhana bahwa saya memiliki referensi ke Adaptor Uji MS lama di proyek saya.

Saya memiliki duplikat baris di bawah ini untuk versi 1.1.11 dari MS Test Adapter di file cs.proj saya:

<Import Project="..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" />

Menyelesaikan masalah,

  1. Klik kanan pada proyek dan pilih 'Bongkar Proyek'.
  2. Klik kanan proyek dan pilih 'Edit'
  3. Hapus baris yang mengimpor adaptor versi lama.
  4. Klik kanan pada proyek dan pilih 'Muat Ulang Proyek'.
  5. Membangun Kembali Solusi / Proyek
jamo
sumber
Punya masalah yang sama. Menghapus dan membangun kembali solusi tidak berhasil. VS yang dimulai kembali dan tes ditemukan!
Mike Ward
4

Hanya ada masalah dengan studio visual yang tidak dapat menemukan tes saya, tidak bisa melihat tombol untuk menjalankannya selain metode, dan mereka tidak diambil dengan menjalankan semua tes dalam proyek.

Ternyata kelas ujian saya tidak publik! Mempublikasikannya memungkinkan VS untuk menemukan tes.

dahui
sumber
2

Bagi saya lebih mudah untuk membuat proyek pengujian baru yang berfungsi dengan sangat baik dengan Visual Studio 2017 ... dan cukup salin file tes, tambahkan referensi, dan paket NuGet sesuai kebutuhan.

masukkan deskripsi gambar di sini

Jaider
sumber
membuat proyek baru mungkin menghemat berjam-jam sakit kepala!
M.kazem Akhgary
2

Dalam kasus saya, itu adalah proyek yang telah saya perbarui proyek uji dari versi .Net sebelumnya. di app.config saya punya assembbindings ke versi sebelumnya dari rakitan dependen.

Setelah memperbaiki assembnlybindings di app.config, tes saya ditemukan.

Henrik Gering
sumber
2

Penemuan

Jawaban teratas di atas tidak berfungsi untuk saya (memulai ulang, memperbarui ke versi 1.1.18 ... Saya sudah diperbarui, menghapus file temp, membersihkan cache NuGet dll).

Apa yang saya temukan adalah bahwa saya memiliki referensi yang berbeda untuk MSTest.TestAdapter dan MSTest.Framework dalam proyek pengujian yang berbeda (solusi saya memiliki dua). Satu menunjuk ke 1.1.18 seperti ...

paket.config

<package id="MSTest.TestAdapter" version="1.1.18" targetFramework="net461" />
<package id="MSTest.TestFramework" version="1.1.18" targetFramework="net461" />

... tetapi yang lain memiliki referensi ke 1.1.11. Beberapa jawaban di atas mengarah pada penemuan ini ketika dua versi perpustakaan muncul di direktori temp saya (% TEMP% \ VisualStudioTestExplorerExtensions \) setelah memulai kembali Visual Studio.

Larutan

Cukup memperbarui paket saya.config ke versi 1.1.18 adalah apa yang mengembalikan fungsionalitas unit test saya di VS. Tampaknya ada beberapa bug yang tidak memungkinkan referensi berdampingan perpustakaan MSTest. Semoga ini bisa membantu Anda.

Info lebih lanjut:

  • Visual Studio 2017 Ent: 15.5.6 (Saya telah memperbarui dari 15.0.1 dengan harapan untuk memperbaiki masalah ini, tapi saya punya keduanya)
ebol2000
sumber
2

Solusi sedang menghapus app.configfile saya dari proyek unit test saya. Tes akan muncul kembali!

File ini mereferensikan beberapa dll dalam pengikatan arahan yang sebenarnya tidak ada dalam referensi proyek. Tambahkan kembali binding perakitan yang benar-benar diperlukan untuk proyek Anda.

domenu
sumber
1

Dalam kasus saya, proyek UWP hadir dalam solusi yang menyebabkan masalah.

Ketika saya membongkar proyek UWP, tes ditemukan. Ketika saya memuatnya kembali, tes menghilang lagi.

Cobalah bongkar semua proyek dan simpan proyek uji saja. Sepuluh solusi membangun kembali dan uji coba muncul di Test Runner. Muat proyek satu per satu dan buat kembali solusi setiap kali untuk mencari tahu proyek apa yang menyebabkan masalah

contoh repo

Laporan bug VS

Liero
sumber
Hargai responsnya tetapi ini bukan masalah saya. Jika Anda melihat contoh repo yang saya tautkan dalam pertanyaan saya, hanya ada satu proyek dalam solusinya. Tidak ada proyek lain untuk dihapus. Solusi itu adalah ujian, jadi saya memang mencoba apa yang Anda katakan bongkar proyek pada solusi saya yang sebenarnya tetapi tidak berhasil.
rayepps
1

Masalah

Masalahnya adalah bahwa Visual Studio semakin 'bingung' atas versi inti dotnet pada mesin. Ketika saya pergi ke control panel -> uninstall program saya punya 8 dotnet core SDK dan Runtimes yang berbeda diinstal. Ini entah bagaimana menyebabkan VS diam-diam memiliki kesalahan ketika mencoba menemukan tes.

Validasi Masalahnya

Anda dapat memvalidasi masalah dengan masuk ke baris perintah dan mendapatkan versi dotnet Anda $ dotnet --version. Jika Anda melihat sesuatu kecuali versi terbaru yang telah Anda instal maka mesin Anda memiliki beberapa ketidaksesuaian dan tidak menggunakan versi yang benar. Contoh ... Jika Anda memiliki inti dotnet yang 1.0.1diinstal tetapi ketika Anda mendapatkan versi di command prompt dan itu mengatakan itu 1.0.0masalah.

Solusinya

Hapus semua barang lama. Saya mulai dengan hanya apa yang saya pikir perlu saya hapus (versi rc dotnet tertua) tetapi masih memberikan versi yang salah ketika menguji masalah. Akhirnya saya mengakui melakukan pembersihan penuh. SAYA...

  • Copot semua aplikasi visual studio (pada mesin saya VS2015 dan VS2017)
  • Menghapus semua versi dotnet core (bahkan yang terbaru)

Setelah mesin saya benar-benar kosong dari semua VS dan donet saya hanya menginstal VS2017 (itu datang dengan dotnet terbaru). Saya membuat proyek uji xUnit dan penjelajah uji menemukan tes segera ASK

Ini mungkin terlihat seperti berlebihan tetapi saya menghabiskan dua minggu mencoba untuk memperbaikinya dengan cara lain. Jika Anda mengalami masalah lakukan saja, meskipun mungkin Anda perlu waktu beberapa jam untuk menghapus instalan / menginstal ulang item itu mungkin akan menghemat waktu Anda.

Referensi

  • Lihat posting blog @epestic di mana dia memberikan detail lebih lanjut tentang memperbaiki masalah ini.
rayepps
sumber
1

Saya sudah mencoba segalanya tetapi tidak ada yang membantu. Dalam kasus saya, saya punya solusi dengan beberapa proyek uji dan beberapa dari mereka menggunakan kerangka kerja uji-ms lama sehingga Visual Studio hanya menemukan itu.

Saya menginstal paket kerangka kerja pengujian untuk semua proyek uji seperti yang ditunjukkan dalam jawaban yang diterima . Kemudian menghapus referensi ke alat kualitas lama, me-restart Visual Studio dan sekarang saya bisa melihat semua tes.

t3chb0t
sumber
1

Untuk C ++:

Karena tidak ada pertanyaan khusus untuk tes C ++, tapi topiknya hampir sama, inilah yang membantu saya ketika saya mengalami masalah dengan penemuan tes.

Jika Anda hanya menginstal pengembangan Desktop dengan C ++ , solusinya adalah juga menginstal pengembangan Universal Windows Platform dengan alat C ++ Universal Windows Platform opsional . Anda dapat memilih ini di penginstal web visual studio.

Setelah itu, bangun kembali proyek pengujian Anda dan penemuan tes akan berhasil.

Btw, saya membuat proyek unit test di VS2017. Mungkin penting, karena beberapa pengguna menyebutkan, bahwa mereka memiliki masalah penemuan dalam proyek, yang dimigrasikan dari VS2015 ke VS2017.

feng
sumber
1

Menghapus .dll lama akan membantu. Menghapus file temp yang terletak di direktori% TEMP% di C: \ Users (nama pengguna Anda) \ AppData \ Local \ Temp

Tanya Fomenko
sumber
1

Saya memiliki masalah yang sama. Solusi saya baik-baik saja tetapi tiba-tiba ketika saya membuka solusi saya menemukan bahwa tes sudah hilang.

Akhirnya saya menurunkan versi Microsoft.VisualStudio.TestPlatform.TestFrameworkdan Microsoft.VisualStudio.TestPlatform.TestFramework.Extensionspaket ke versi yang sangat lama (menggunakan manajer NuGet) dan metode pengujian muncul. Kemudian saya upgrade ke versi terbaru dan masih ada di sana.

Jadi cukup downgrade dan perbarui paket.

BERKEDIP
sumber
1

Dalam kasus saya tidak ada yang membantu saya di atas. Tapi, saya menurunkan NUNit3TestAdapter ke versi 3.8.0, lalu memutakhirkan ke yang terbaru (3.10.0)

vlatko606
sumber
1

Terkadang mengubah namespace dari hasil tes. Saya memiliki struktur folder sebagai berikut:

A |___B | |___D |___C___E

Namespace datar seperti Tes. <Nama> dan tidak muncul di jendela tes. Ketika saya mengubah namespace ke struktur direktori, semua tes muncul. Sekarang saya bisa kembali ke struktur namespace lain yang saya inginkan.

Jangan lupa untuk membangun proyek Anda!

Rohan
sumber
1

Dalam kasus .NET Framework, dalam proyek uji sebelumnya ada referensi ke DLL berikut:

Microsoft.VisualStudio.TestPlatform.TestFramework
Microsoft.VisualStudio.TestPlatform.TestFramework.Extentions

Saya menghapusnya dan menambahkan referensi ke:

Microsoft.VisualStudio.QualityTools.UnitTestFramework

Dan kemudian semua tes muncul dan mulai bekerja dengan cara yang sama seperti sebelumnya.

Saya mencoba hampir semua saran lain di atas sebelumnya, tetapi hanya mereferensikan ulang tes DLL bekerja dengan baik. Saya memposting jawaban ini untuk mereka yang ada dalam kasus saya.

U.Savas
sumber
1

Saya menghadapi masalah yang sama, dalam kasus saya untuk diselesaikan

  1. Saya membuka konsol windows (tombol windows + cmd).
  2. Arahkan ke folder tempat proyek itu dibuat.
  3. Dieksekusi perintah "uji dotnet" itu pada dasarnya adalah tes yang sama yang dieksekusi visual studio tetapi ketika Anda menjalankannya melalui konsol itu memungkinkan Anda untuk melihat jejak lengkap.
  4. Saya mendapat pesan kesalahan ini "Atribut TestClass didefinisikan pada MSTest.TestController.BaseTest kelas non-publik"
  5. Jadi saya pergi ke tempat uji dan menandainya sebagai publik, membangun lagi dan tes saya ditampilkan dengan benar
axcha15
sumber
0

Pada awalnya, saya sudah mencoba menggunakan MSTest. Setelah itu, saya mengubahnya ke tes Nunit. Lalu saya ingin mendukung MSTest. Saya menghapus semua kode dan referensi nUnit tetapi Test Explorer tidak menunjukkan metode MSTest. Solusi: Saya menghapus semua referensi nuget mstest dan diinstal ulang. Selesai

Oguzhan KIRCALI
sumber
0

Bagi saya, mengubah TargetFramework di .csprojfile proyek uji dari

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

untuk

  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>

bekerja.

JDawg
sumber
0

Dalam kasus saya masalahnya adalah jenis proyek diatur ke perpustakaan statis (lib), dan itu harus perpustakaan dinamis (dll)

kjhf
sumber