Saya baru-baru ini membangun kerangka uji untuk sedikit C # yang sedang saya kerjakan. Saya telah menyiapkan NUnit dan proyek baru dalam ruang kerja saya untuk menguji komponen tersebut. Semua bekerja dengan baik jika saya memuat pengujian unit saya dari Nunit (v2.4), tetapi saya sampai pada titik di mana akan sangat berguna untuk menjalankan dalam mode debug dan mengatur beberapa titik istirahat.
Saya telah mencoba saran dari beberapa panduan yang semuanya menyarankan untuk mengubah properti 'Debug' dari proyek uji:
Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll
Saya menggunakan versi konsol di sana, tetapi telah mencoba memanggil GUI juga. Keduanya memberi saya kesalahan yang sama ketika saya mencoba dan memulai debugging:
Cannot start test project 'TestDSP' because the project does not contain any tests.
Apakah ini karena saya biasanya memuat \ DSP.nunit ke GUI Nunit dan di sanalah tes diadakan?
Saya mulai berpikir masalahnya mungkin VS ingin menjalankan kerangka pengujiannya sendiri dan itulah mengapa gagal menemukan tes NUnit?
Sunting : Untuk mereka yang bertanya tentang perlengkapan uji, salah satu file .cs saya di proyek TestDSP terlihat kira-kira seperti ini:
namespace Some.TestNamespace
{
// Testing framework includes
using NUnit.Framework;
[TestFixture]
public class FirFilterTest
{
[Test]
public void Test01_ConstructorTest()
{
...some tests...
}
}
}
... Saya cukup baru mengenal C # dan kerangka kerja uji NUnit sehingga sangat mungkin saya melewatkan beberapa informasi penting ;-)
Solusi Akhir : Masalah besarnya adalah proyek yang saya gunakan. Jika Anda memilih Other Languages -> Visual C# -> Test -> Test Project
... saat Anda memilih jenis proyek, Visual Studio akan mencoba dan menggunakan kerangka pengujiannya sendiri sejauh yang saya tahu. Anda harus memilih proyek perpustakaan kelas C # normal sebagai gantinya dan kemudian instruksi dalam jawaban yang saya pilih akan berfungsi.
sumber
Jawaban:
Saya menggunakan teknik yang sama seperti Anda mencoba Jon, tanpa flag / assembly, yaitu
Apakah TestDSP.dll berisi semua TestFixtures Anda?
Karena proyek pengujian saya bukanlah proyek startup dalam solusi, saya menjalankan pengujian dengan mengklik kanan proyek pengujian dan memilih Debug -> Mulai Instans Baru
sumber
/run
argumen baris perintah * yang secara otomatis akan mulai menjalankan tes ... Saya juga telah menyimpulkan semuanya (menggunakan gambar) di posting blog saya .<supportedRuntime version="v2.0.50727" />
di nunit.exe.config.Ketika saya perlu men-debug tes NUnit saya, saya cukup melampirkan ke aplikasi NUnit GUI
nunit-agent.exe
menggunakan "Debug | Attach to Process" dan menjalankan tes dari GUI. Setiap breakpoint dalam pengujian saya (atau kode yang mereka uji) terkena. Apakah saya salah memahami pertanyaan Anda, atau akankah itu berhasil untuk Anda?sumber
<startup> <supportedRuntime version="4.0" /> </startup>
.Cukup hapus garis yang terlihat seperti itu
dari file proyek Anda. Baris ini pada dasarnya memberi tahu VS.Net bahwa ini adalah proyek Uji, sehingga "Tidak dapat memulai proyek uji". FYI di sini Panduan pertama mengatakan "ini ujian", Panduan kedua mengatakan "ini C #". Untuk informasi tentang Panduan tersebut: http://www.mztools.com/Articles/2008/MZ2008017.aspx
sumber
Selain jawaban yang diberikan oleh @Justin, berikut adalah beberapa detail lainnya untuk NUnit 2.6.
Menggunakan NUnit 2.6 melampirkan ke nunit.exe atau nunit-console.exe dan BUKAN agen. Konfigurasi yang dicatat oleh @Justin sedikit berbeda. Di bawah ini adalah contoh dari nunit.exe.config (sama untuk nunit-console.exe.config).
Untuk proyek pengujian .NET 4, untuk mendapatkan break point, Anda harus memberi komentar atau menghapus baris v2.0 seperti yang disarankan oleh komentar. Setelah saya melakukannya, saya dapat men-debug proyek uji .NET 4.0.
sumber
v2.0.50727
baris saat debugging .NET 2 rakitan dari VS2005 dengan nunit. (v4
Garis itu mencegah debugger VS 2005 untuk melampirkan.)Jika Anda menggunakan NUnit 2.4 atau yang lebih baru, Anda dapat meletakkan kode berikut di
SetUpFixture
kelas Anda . (Anda dapat melakukan ini dengan versi yang lebih lama tetapi Anda perlu melakukan apa pun yang setara dengan ituSetUpFixture
, atau menyalinnya ke pengujian itu sendiri.)Apa
Debugger.Launch()
yang menyebabkan dialog berikut muncul saat Anda mengklik Jalankan di dalam NUnit.Anda kemudian memilih contoh studio visual yang sedang berjalan dengan proyek Anda terbuka (yang ke-2 di tangkapan layar saya) kemudian debugger akan dilampirkan dan setiap titik putus atau pengecualian akan muncul di Visual Studio.
sumber
Di Nunit 3.0.1 (Saya menggunakan VS2013), Buka dari menu utama> Test> Windows> Test Explorer. Kemudian di "Penjelajah pengujian", klik kanan kasus pengujian, Anda mungkin melihat:
Semoga ini membantu.
sumber
Instal TestDriven.NET , yang merupakan plugin untuk Visual Studio
Dari sana Anda dapat mengklik kanan pada unit test assembly Anda dan klik Run Tests untuk menjalankan seluruh rangkaian, klik kanan pada kelas TestFixture untuk menjalankan hanya pengujian di kelas itu, atau klik kanan pada metode Test untuk menjalankan metode itu saja.
Anda juga memiliki opsi untuk Menguji Dengan Debugger, jika Anda perlu breakpoint ke pengujian Anda dalam mode debug.
sumber
Coba NUnit - sumber terbuka Visual Studio Addin untuk Debugging kasus NUnit Test
Halaman Rumah - http://nunitit.codeplex.com/
sumber
Hapus ProjectTypeGuids dari file proyek.
sumber
Sekarang dengan gambar:
File -> Open Project
Pilih pengujian Anda
.dll
dari folder bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll
)Pergi ke Visual Studio
Debug -> Attach to process
(jendela Attach to process akan terbuka)Dari daftar gulir ke bawah dan pilih
nunit-agent.exe
lalu klikAttach
Pada titik ini, titik henti dalam pengujian Anda harus berubah menjadi merah matang (dari cekungan).
Klik
Run
diNunit Gui
dan Anda harus mendapatkan breakpoint hit Anda ...Semoga ini menghemat waktu Anda.
sumber
Jika Anda bisa mendapatkan konsol / atau GUI yang berfungsi, tetapi breakpoint Anda tidak terkena, itu mungkin karena aplikasi Anda menjalankan runtime .NET yang berbeda dari NUnit. Periksa untuk melihat apakah nunit-console.exe.config / nunit.exe.config Anda memiliki runtime yang ditentukan. (Konfigurasi tinggal di direktori yang sama dengan exe nunit.) Tentukan runtime menggunakan node startup:
sumber
Jika jalur proyek berisi spasi misalnya "Proyek Baru" di jalur,
<path>\bin\Debug\New Project\Quotes.Domain.Tests.dll
tutupi Jalur Proyek Opsi Mulai -> Argumen Baris Perintah dalam tanda kutip ganda.Saya menghabiskan banyak waktu untuk memikirkan hal ini.
sumber
Mengenai apa yang Mr Patrick McDonald mengatakan
Saya mencoba untuk mendaftar ke perpustakaan kelas pengujian saya tetapi mendapat beberapa kesalahan terkait jalur, jadi saya mencoba untuk menghapus 'Argumen Baris Perintah', dan untungnya itu bekerja dengan baik dan seperti yang diharapkan.
sumber
Sepertinya Anda mencoba menggunakan perpustakaan yang salah. NUnit hanya dapat dijalankan jika dll yang Anda gunakan berisi TestFixtures.
+1 di TestDriven.Net. Saya memiliki kesempatan untuk menggunakannya beberapa kali. Anda dapat mengunduh versi pribadi untuk tujuan evaluasi sesuai dengan lisensi di http://testdriven.net/purchase_licenses.aspx .
sumber
Saya mendapat kesalahan yang sama dengan MSTest. Saya menemukan bahwa di jendela Test Output , beberapa tes memiliki ID duplikat dan tidak dapat dimuat. Saya menghapus semua tes duplikat dan sekarang saya dapat menjalankan tes ketika saya memulai proyek.
sumber
Ada juga ekstensi sekarang "Visual NUnit" yang akan memungkinkan Anda untuk menjalankan tes dari dalam Visual studio seperti build in test framework menangani. Lihat itu di pengelola ekstensi.
sumber
Buka Visual Studio ---> Proyek Anda ---> Pilih 'Properties' ---> Pilih 'Debug' -> Pilih 'Mulai program eksternal' dan atur jalur NUnit Anda di sana (Misalnya: Mulai program eksternal = C : \ Program Files \ NUnit 2.6.2 \ bin \ nunit.exe) ----> Simpan
Setelah mengatur ini cukup klik Debug
sumber
Bagi saya solusinya adalah mengadaptasi file konfigurasi nunit. Untuk menggunakan nunit dengan kerangka 4.5-.Net dan opsi build x64, saya harus menambahkan satu baris ke tag startup (mendukung versi runtime).
Setelah itu, saya bisa mulai dengan klik kanan pada Testproject Debug -> Start new instance. Sebelumnya, saya perlu melampirkan lagi proyek secara manual ke proses.
Properti Debug saya adalah, C: \ Program Files (x86) \ NUnit 2.6.4 \ bin \ nunit.exe dengan argumen lokasi .dll yang akan diuji.
Informasi selengkapnya: nunit untuk pengujian dengan .NET 4.0
sumber
Lihat apakah ini membantu .. Bagaimana menambahkan NUnit di Visual Studio
(RighteousRant) Meskipun secara pribadi saya tidak suka pendekatan ini .. Jika Anda memerlukan debugger saat menguji kode Anda, itu adalah "bau" karena Anda tidak memiliki cukup keyakinan / tahu cara kerja kode & membutuhkan debugger untuk memberitahumu itu. TDD seharusnya membebaskan Anda dari kebutuhan debugger jika dilakukan dengan benar. Gunakan 'Lampirkan debugger ke NUNit' hanya untuk kasus yang jarang terjadi atau saat Anda mengarungi kode orang lain.
sumber