Ketika saya membangun proyek pengujian unit sebelum pengujian dijalankan, output pengujian disalin ke folder TestResults dan kemudian pengujian dijalankan. Masalah yang saya alami adalah tidak semua file di direktori Debug / bin disalin ke proyek TestResults.
Bagaimana saya bisa mendapatkan file yang disalin ke direktori Debug / bin untuk juga disalin ke folder TestResults?
c#
.net
visual-studio-2008
unit-testing
mstest
Eric Schoonover
sumber
sumber
Anda dapat menentukan atribut penerapan seperti contoh yang ditunjukkan di bawah ini; Anda juga perlu menyetel properti "Konten" & "Salin jika lebih baru" (tidak ada dokumentasi pada setelan selanjutnya, tetapi Anda telah menyetelnya untuk membuatnya berfungsi.
sumber
Saya harus mengaktifkan "Aktifkan Penerapan" di bawah
Test -> Edit Test Settings -> Local -> Deployment
agar[DeploymentItem]
atribut berfungsi.sumber
Ketiga jawaban tersebut benar, tergantung kebutuhan Anda.
Menambahkan file untuk diterapkan di .testrunconfig (.testsettings di VS2010) akan menyalin semua file tersebut ke setiap folder keluaran pengujian, bahkan untuk pengujian yang tidak terkait yang dijalankan secara terpisah. Jika Anda menjalankan satu pengujian, semua file data pengujian yang tercantum di bagian penerapan .testssettings akan disalin ke folder keluaran pengujian.
Dalam pengujian saya, saya perlu menyalin file XML yang diharapkan ke folder keluaran pengujian untuk dibandingkan dengan XML keluaran pengujian yang sebenarnya. Saya menggunakan atribut DeploymentItem untuk hanya menyalin file XML yang terkait dengan tes yang sedang dijalankan. Di VS2010 saya harus mengaktifkan penerapan di file .testsettings (tetapi tidak menambahkan jalur apa pun) dan kemudian merujuk jalur file XML yang terkait dengan TestProject di DeploymentItem.
Semoga ini membantu.
sumber
Saya memiliki masalah yang sama tetapi masalah saya berkaitan dengan menunjuk ke file TraceAndTestImpact.testsettings alih-alih file Local.testsettings. Anda dapat mengubah dari satu ke yang lain di bawah menu Test / Select Active Test Settings.
sumber
Hanya ingin meningkatkan jawaban yang diterima dengan menyebutkan cara untuk membuatnya diterapkan secara khusus untuk dll daripada metode normal menggunakannya untuk data atau konfigurasi dll, untuk keadaan di mana CopyLocal tidak berfungsi:
sumber
Pekerjaan berikut di VS2012 untuk proyek pengujian yang disertakan dalam beberapa solusi tanpa menggunakan file setelan pengujian:
1) Atur file dan folder yang ingin Anda terapkan ke dalam folder di direktori proyek pengujian.
2) Di properti proyek, buat langkah pembuatan pos
$(ProjectDir)
dan$(TargetDir)
merupakan makro yang akan ditafsirkan oleh VS dan harus dimasukkan seperti itu.<Project_Folder_Name>
adalah nama folder yang dibuat pada langkah 1.<Deployment_Folder_Name>
adalah nama folder tempat file pengujian akan disebarkan dan harus dinamai sedemikian rupa sehingga akan menjadi unik saat beberapa proyek pengujian diterapkan ke direktori yang sama, misalnya<Project_Name>_TestInputs
.File pengujian di lokasi bersama juga harus disalin ke folder penerapan direktori target untuk membatasi interaksi pengujian. Berikan jalur sumber yang terkait dengan
$(ProjectDir)
makro. Misalnya"$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.3) Tambahkan
[DeploymentItem(source, destination)]
properti ke setiap metode pengujian yang menggunakan file penerapan (praktik terbaik) atau ke kelas pengujian (praktik yang lebih mudah bagi yang malas atau terburu-buru, dan cara termudah untuk memperbarui proyek jalur relatif yang sebelumnya digunakan atau file setelan pengujian ).Pada metode pengujian,
source
adalah jalur ke file atau direktori yang digunakan dalam metode pengujian relatif terhadap direktori target seperti yang dibuat olehxcopy
dandestination
merupakan jalur ke direktori yang akan dibuat relatif terhadap direktori penerapan. Agar pengujian berjalan konsisten baik di direktori target atau di direktori penerapan. Jalur tujuan harus sama dengan jalur sumber tanpa referensi file. Contoh:[DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. IniDeploymentItem
harus disertakan pada setiap metode yang menggunakan file atau direktori tersebut.Di kelas,
source
dandestination
keduanya adalah nama folder yang dibuat di direktori target olehxcopy
; ini akan menyalin seluruh folder ke direktori penerapan ketika tes apa pun di kelas dijalankan. Contoh:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) Dalam metode pengujian, Anda sekarang dapat mengakses file dan direktori dengan keyakinan bahwa mereka akan berada di direktori kerja di mana pun Visual Studio memutuskan untuk meletakkannya hari itu, misalnya
File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.sumber
Coba baris perintah acara Pasca Bangun dari dalam Visual Studio (jika Anda menggunakan IDE itu).
sumber
Dalam Visual Studio 2012 Anda tidak memerlukan atribut DeploymentItem untuk kasus sederhana. Lihat jawaban saya di sini
sumber
sumber
Jawaban yang diterima benar dan begitu juga sebagian besar jawaban lainnya. Namun, selama bertahun-tahun saya telah menemukan bahwa sistem Deploment dari Tes Unit Visual Studio menggunakan DeploymentAttribtue dan Salin ke Output menjadi rumit jika Anda memiliki sejumlah besar file data. Saya telah menemukan bahwa menyimpan file di lokasi aslinya bekerja lebih baik.
Detail lengkapnya ada di jawaban saya yang lain di sini. https://stackoverflow.com/a/53004985/2989655
Semoga ini membantu.
sumber