Saya unit sedang menguji aplikasi .NET (.exe) yang menggunakan file app.config untuk memuat properti konfigurasi. Aplikasi tes unit itu sendiri tidak memiliki file app.config.
Ketika saya mencoba untuk menguji unit metode yang memanfaatkan salah satu properti konfigurasi, mereka mengembalikan nol . Saya berasumsi ini karena aplikasi unit test tidak akan dimuat di app.config aplikasi target.
Apakah ada cara untuk menimpa ini atau apakah saya harus menulis skrip untuk menyalin konten dari app.config target ke app.config lokal?
Jenis posting ini menanyakan pertanyaan ini tetapi penulis benar-benar melihatnya dari sudut yang berbeda dari saya.
EDIT: Saya harus menyebutkan bahwa saya menggunakan Sistem Tim VS08 untuk tes unit saya.
sumber
Dalam Visual Studio 2008 saya menambahkan
app.config
file ke proyek uji sebagai item yang ada dan salin dipilih sebagai tautan untuk memastikan itu tidak digandakan. Dengan begitu saya hanya punya satu salinan dalam solusi saya. Dengan beberapa proyek pengujian, ini sangat berguna!sumber
Baik Anda menggunakan Tes Sistem Tim atau NUnit , praktik terbaik adalah membuat Perpustakaan Kelas terpisah untuk tes Anda. Cukup menambahkan App.config ke proyek Uji Anda akan secara otomatis disalin ke folder bin Anda ketika Anda kompilasi .
Jika kode Anda bergantung pada tes konfigurasi tertentu, tes pertama yang saya tulis akan memvalidasi bahwa file konfigurasi tersedia ( sehingga saya tahu saya tidak gila ):
Dan tesnya:
Idealnya, Anda harus menulis kode sedemikian rupa sehingga objek konfigurasi Anda diteruskan ke kelas Anda. Ini tidak hanya memisahkan Anda dari masalah file konfigurasi, tetapi juga memungkinkan Anda untuk menulis tes untuk berbagai skenario konfigurasi.
sumber
Jika Anda memiliki solusi yang berisi misalnya Aplikasi Web dan Proyek Uji, Anda mungkin ingin agar Proyek Uji menggunakan web.config Aplikasi Web.
Salah satu cara untuk mengatasinya adalah menyalin web.config untuk menguji proyek dan menamainya sebagai app.config.
Solusi lain dan lebih baik adalah memodifikasi rantai build dan membuatnya untuk membuat salinan otomatis web.config untuk menguji direktori keluaran proyek. Untuk melakukan itu, klik kanan Aplikasi Uji dan pilih properti. Sekarang Anda akan melihat properti proyek. Klik "Bangun Acara" dan kemudian klik tombol "Edit Post-build ...". Tulis baris berikut ke sana:
Dan klik OK. (Perhatikan bahwa Anda kemungkinan besar perlu mengubah WebApplication1 saat Anda memproyeksikan nama yang ingin Anda uji). Jika Anda memiliki jalur yang salah ke web.config maka penyalinan gagal dan Anda akan melihatnya saat pembangunan gagal.
Edit:
Untuk Menyalin dari Proyek saat ini ke Proyek Uji:
sumber
.config
file. Terima kasih telah berbagi! :)web.config
hanya memiliki referensi ke.config
file eksternal dalam proyek yang sama. Karena jalur hanya dapat menunjuk ke folder dalam direktori yang sama (yang benar secara normal), saat menjalankan tes, itu tidak akan dapat menangani file-file eksternal. Adakah cara mengatasinya?Ini agak lama tetapi saya menemukan solusi yang lebih baik untuk ini. Saya mencoba jawaban yang dipilih di sini tetapi sepertinya .testrunconfig sudah usang.
1. Untuk Tes Unit, Bungkus konfigurasi adalah Interface (IConfig)
untuk pengujian Unit, konfigurasi seharusnya tidak menjadi bagian dari pengujian Anda, jadi buat tiruan yang dapat Anda suntikkan. Dalam contoh ini saya menggunakan Moq.
2. Untuk uji Integrasi, tambahkan secara dinamis konfigurasi yang Anda butuhkan
sumber
Ini sangat mudah.
sumber
Jika Anda menggunakan NUnit, lihat posting ini . Pada dasarnya Anda harus memiliki app.config di direktori yang sama dengan file .nunit Anda.
sumber
Jika aplikasi Anda menggunakan pengaturan seperti Asp.net ConnectionString Anda perlu menambahkan atribut HostType ke metode Anda, jika tidak mereka akan memuat bahkan jika Anda memiliki file App.Config.
sumber
Saya menggunakan NUnit dan dalam direktori proyek saya, saya memiliki salinan App.Config saya bahwa saya mengubah beberapa konfigurasi (misalnya saya mengarahkan ulang ke database pengujian ...). Anda harus memilikinya di direktori yang sama dengan proyek yang diuji dan Anda akan baik-baik saja.
sumber
Saya tidak bisa mendapatkan saran ini untuk bekerja dengan nUnit 2.5.10 jadi saya akhirnya menggunakan Project nUnit -> Edit fungsionalitas untuk menentukan file konfigurasi untuk ditargetkan (seperti yang orang lain katakan perlu berada di folder yang sama dengan. file nunit itu sendiri). Sisi positif dari hal ini adalah bahwa saya dapat memberikan file config nama Test.config yang membuatnya lebih jelas apa itu dan mengapa itu)
sumber
Tes unit Anda dianggap sebagai lingkungan yang menjalankan kode Anda untuk mengujinya. Sama seperti lingkungan normal, Anda memiliki staging / produksi. Anda mungkin perlu menambahkan
.config
file untuk proyek pengujian Anda juga. Solusinya adalah membuat perpustakaan kelas dan mengonversinya menjadi Proyek Uji dengan menambahkan paket NuGet yang diperlukan seperti NUnit dan NUnit Adapter. itu berfungsi dengan baik dengan Visual Studio Test Runner dan Resharper dan Anda memilikiapp.config
file Anda dalam proyek pengujian Anda.Dan akhirnya men-debug tes dan nilai saya dari
App.config
:sumber