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.
sumber
app.config
file dalam proyek pengujian saya: stackoverflow.com/a/47497668/67824 .Jawaban:
Dalam kasus saya, ternyata saya hanya perlu memutakhirkan adaptor pengujian dan kerangka kerja pengujian saya. Selesai
Contoh menggunakan Manajer Paket NuGet:
sumber
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.
sumber
%TEMP%
- bawa jendela perintah dan ketikecho %TEMP%
API untuk adapter uji untuk .NET Core berubah dengan rilis Visual Studio 2017 dan perpindahan dari
project.json
format kecsproj
format. Ini membuatdotnet-test-*
adapter yang ada sepertidotnet-test-nunit
usang.Adaptor telah diperbarui, tetapi cara Anda mengatur dan menjalankan tes di Visual Studio atau pada baris perintah dengan
dotnet test
memerlukan referensi yang berbeda di proyek pengujian Anda. Waspadalah terhadap dokumentasi apa pun yang Anda temukan bahwa paket referensi dalamdotnet-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,Sebuah komentar di atas menyebutkan menambahkan,
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
sumber
Saya memiliki masalah yang sama dan mulai bekerja dengan melakukan hal berikut ..:
sumber
Microsoft.NET.Test.Sdk
sepertinya berhasil untuk saya .. terima kasih StackOverflow. (.NET Framework WebApi 2 solusi)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:
Untungnya versi yang diperbarui melemparkan pengecualian ini untuk membuat saya kesulitan
Memodifikasi kelas uji agar masalah publik diperbaiki
sumber
public
kelas, tetapi hanya kelas, sehingga tidak akan menemukannya sampai Anda menambahkanpublic
pengenal.Dalam kasus saya, saya menargetkan proyek tes untuk
x64
Arsitektur dan pengaturan tes Arsitektur (test-> Default Processor Architecture) diubah diatur kex86
. Mereka tidak cocok.Setelah mengatur kembali pengaturan tes Arsitektur ke
x64
dan membangun kembali semua tes ditemukan lagi.sumber
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
Saya membuat Test.dll baru di proyek dan yang digunakan secara default
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.
sumber
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.
sumber
Bagi saya masalah adalah saya keliru menempatkan testcases di kelas internal
yang menyebabkan testcases tidak teridentifikasi.
sumber
Pastikan Anda menggunakan Microsoft.NET.Test.Sdk yang benar:
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:
tapi saya pikir itu tidak perlu.
sumber
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.sumber
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,
sumber
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.
sumber
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.
sumber
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.
sumber
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
... 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:
sumber
Solusi sedang menghapus
app.config
file 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.
sumber
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
sumber
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 yang1.0.1
diinstal tetapi ketika Anda mendapatkan versi di command prompt dan itu mengatakan itu1.0.0
masalah.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...
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
sumber
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.
sumber
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.
sumber
Menghapus .dll lama akan membantu. Menghapus file temp yang terletak di direktori% TEMP% di C: \ Users (nama pengguna Anda) \ AppData \ Local \ Temp
sumber
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.TestFramework
danMicrosoft.VisualStudio.TestPlatform.TestFramework.Extensions
paket 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.
sumber
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)
sumber
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!
sumber
Dalam kasus .NET Framework, dalam proyek uji sebelumnya ada referensi ke DLL berikut:
Saya menghapusnya dan menambahkan referensi ke:
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.
sumber
Saya menghadapi masalah yang sama, dalam kasus saya untuk diselesaikan
sumber
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
sumber
Bagi saya, mengubah TargetFramework di
.csproj
file proyek uji dariuntuk
bekerja.
sumber
Dalam kasus saya masalahnya adalah jenis proyek diatur ke perpustakaan statis (lib), dan itu harus perpustakaan dinamis (dll)
sumber