Dapatkah saya menggunakan mstest.exe tanpa menginstal Visual Studio?

108

Saya ingin menggunakan mstest.exe untuk menjalankan pengujian unit saya di server build, tetapi saya tidak ingin menginstal Visual Studio di server build. Bisakah saya menginstal MSTest tanpa Visual Studio?

yang-qu
sumber
Bisakah Anda memberikan sedikit lebih banyak detail. Versi apa Bangun server? dll
Richard Banks

Jawaban:

168

Dimungkinkan untuk menjalankan mstest.exe tanpa studio visual.
Unduh salah satu Agen untuk Visual Studio ISO di bawah ini dan instal Agen Uji di server:

Visual Studio 2017 (disk space 127MB, kurang dari itu untuk di-download)
Visual Studio 2015 (pengaturan 128MB, ruang disk 2GB diperlukan)
Visual Studio 2012 (224MB)
Visual Studio 2013 (287MB)
Visual Studio 2010 (515MB)

Ini menginstal semua yang diperlukan untuk menjalankan mstest.exe dari baris perintah dan bobotnya jauh lebih ringan daripada studio visual. ~ Download 500mb dan sekitar ~ 300mb untuk menginstal hanya agen tes jika saya ingat dengan benar.

MEMPERBARUI

Untuk versi yang lebih lama dari VS 2017, lihat di sini:

https://www.visualstudio.com/vs/older-downloads/

Bela
sumber
Di mana MsTest.exe ditempatkan setelah menginstal TestAgent dan TestController?
Evgeny Levin
3
C: \ Program Files \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Bodoh
1
Apakah ada agen untuk Visual Studio 2008?
Tomas Kubes
3
Grup saya mengalami masalah setelah menginstal Agen Uji Visual Studio 2012. Kami pikir itu mengubah beberapa nilai registri dan akibatnya membuat kekacauan Visual Studio 2010 hal-hal yang ada di mesin yang sama. Awas.
Stephen
1
Tautan untuk 2015 sudah mati. Agen tes sekarang dapat ditemukan melalui visualstudio.com/downloads/?q=agents
Onots
18

Jawaban ini berkaitan secara khusus dengan Visual Studio 2017, dan jawabannya adalah ya . Perlu diketahui, bagaimanapun, bahwa Microsoft (masih) tidak menyediakan API resmi apa pun untuk menemukan executable yang relevan ( MSBuild.exedan MSTest.exe), jadi Anda terjebak membaca kunci registri dan / atau memeriksa berbagai direktori untuk menemukan file-file ini . Anda telah diperingatkan.

  • Jika Anda hanya perlu membangun proyek pengujian unit Anda, instal paket MSTest.TestFrameworkke dalam proyek tersebut dan hapus referensinya Microsoft.VisualStudio.QualityTools.UnitTestFramework. Sekarang yang Anda butuhkan hanyalah menginstal Visual Studio 2017 Build Tools dan memanggil msbuild.exeuntuk melakukan build.
  • Jika Anda perlu menjalankan pengujian Anda juga, semuanya menjadi lebih rumit:
    • Solusi paling sederhana adalah menginstal VS2017 Community Edition (yang mencakup msbuild dan mstest) - tetapi saya tidak yakin dengan legalitasnya, dan saya bukan pengacara, jadi berhati-hatilah!
    • Solusi yang lebih aman secara hukum (dan jauh lebih ringan, dalam hal ruang disk) adalah menginstal Agen Pengujian Visual Studio 2017 dan kemudian Membangun Alat untuk Visual Studio 2017 ( urutan yang tepat sangat penting 1 ); ini akan memberi Anda MSTest.exedan vstest.console.exeyang kemudian dapat Anda panggil. Perhatikan bahwa sebenarnya mencari tahu di mana executable ini berada sangat merepotkan, karena mereka tidak akan ada dalam struktur direktori yang sama seperti MSBuild.exedi Build Tools.

Terakhir, dan yang sangat penting: jika Anda benar-benar menggunakan MSTest.TestFrameworkdan masih perlu menemukan dan menjalankan pengujian dari dalam Visual Studio IDE, Anda juga perlu MSTest.TestAdapterdiinstal di proyek pengujian unit Anda.

1: Meskipun VS2017 mendukung penginstalan berdampingan, VS2017 menggunakan kunci registri tunggal yang hanya mencatat penginstalan terbaru. Oleh karena itu, jika Anda menginstal Test Agent terakhir, kunci tersebut akan mengarah ke direktori instalnya ... tetapi Test Agent tidak menyertakannya MSBuild.exe, sehingga kode apa pun yang mengandalkan kunci registri ini untuk mengetahui jalur yang dapat dieksekusi, akan gagal. Mengapa Microsoft tidak dapat menjadikan Test Agent sebagai bagian opsional dari Build Tools (sehingga semua EXE berada dalam hierarki direktori yang sama) adalah tebakan siapa pun.

Ian Kemp
sumber
Diinstal melalui metode Test Agent tetapi mstest.exe masih gagal File extension specified '.webtest' is not a valid test extension.untuk saya.
Gregory Suvalian
Sekarang ada tempat - lihat pertanyaan lain, misalnya "Secara terprogram menemukan direktori instalasi VS2017 " atau " MSBuild.exe tidak ditemukan, cmd.exe " yang menggunakannya.
Wai Ha Lee
@WaiHaLee vswherelebih baik daripada tidak sama sekali, tetapi Anda masih harus membuat asumsi di mana MSBuild berada relatif terhadap direktori instalasi VS ... jika (kapan?) Microsoft memutuskan untuk merelokasi salah satu dari executable tersebut, asumsi itu tidak lagi valid . Mengapa Microsoft tidak dapat atau tidak akan membuat cara terprogram untuk mendapatkan jalur ke MSBuild / MSTest / VSTest (sebagai lawan dari direktori instalasi VS, yang tidak dipedulikan oleh siapa pun) tetap berada di luar jangkauan saya.
Ian Kemp
Ya, apakah itu / tidak ada permainan yang mengganggu. Saya yakin mereka punya alasan, tapi ....
Wai Ha Lee
@Ian Kemp Per di atas, saya telah menginstal agen uji dan alat pembuat tetapi saya menerima kesalahan No test is available in C:\Users\..\Desktop\MyExeName.exe... . Saya telah membuka pertanyaan tentang SO . Jika Anda memiliki petunjuk, saya menghargai bantuan Anda.
pengguna1207289
4

Saya pikir Anda mungkin bisa, tetapi itu pasti tidak didukung.

Saya telah menemukan artikel blog ini ditulis oleh seseorang yang mengklaim memiliki MSTest berfungsi tanpa menginstal Visual Studio.

Justin
sumber
Setiap URL dengan kata Hacking benar-benar perlu mempertanyakan nilai usaha jika MS memutuskan untuk mengubah implementasinya, lingkungan Anda dapat berubah-ubah dan hal-hal yang tidak terduga dapat terjadi dengan setiap pembaruan Windows (kami terus memperbarui secara teratur, bukan?).
Russell
Dalam kasus ini, tampaknya tidak mungkin pembaruan windows akan merusak peretasan. Tetapi versi mstest yang lebih baru (misalnya, dalam versi yang lebih baru atau paket layanan VS) mungkin bekerja secara berbeda.
Doc Brown
@ Russell - Secara pribadi saya akan membayar untuk lisensi VS ekstra, atau hanya menggunakan NUnit sebagai gantinya.
Justin
Terima kasih atas semua balasannya, saya hanya akan mendapatkan lisensi VS tambahan.
yang-qu
1
Sebagai penulis Entri Blog di atas, saya dapat membuktikan bahwa itu berhasil, dan sangat tidak mungkin untuk rusak. Setidaknya untuk VS2008. Saya belum melihat ini untuk VS2010. MSTest yang terintegrasi secara mendalam ke dalam VS adalah kelemahan besar dari test kit, tapi menurut saya MS tidak akan memperbaikinya, karena ini mendorong orang untuk menggunakan Sistem Tim.
foxxtrot
4

@crocpulsar, Anda perlu menginstal Visual Studio di server build Anda, tetapi Anda TIDAK perlu membeli lisensi tambahan .

Ada terlalu banyak ketergantungan agar build & MSTest berfungsi tanpa menginstal VS, dan ini pasti tidak didukung.

Selama orang yang memulai build memiliki lisensi, Anda tidak memerlukannya untuk server build. Ini telah terjadi sejak hari-hari kelam tahun 2005, dan selama ada persamaan edisi maka Anda baik-baik saja.

Jika setiap orang di tim Anda memiliki Ultimate, maka Anda bebas menginstalnya di server build; tetapi jika salah satu anggota tim Anda memiliki Premium, maka idealnya Anda harus menginstal Premium di server build. Ini juga mengaktifkan banyak bit lain seperti Cakupan Kode, Analisis Dampak Pengujian, dan Validasi Arsitektur.

MrHinsh - Martin Hinshelwood
sumber
Untuk referensi, inilah posting dari microsoft di blog inis.msdn.com/b/jeffbe/archive/2008/03/18/…
Maslow
2

Saya baru saja membuat ini berfungsi di server saya tanpa menginstal Visual Studio 2017 IDE. Persyaratan saya adalah

  • Bangun proyek
  • Buat proyek uji
  • Jalankan tes menggunakan VSTest (Saya yakin ini adalah proses yang serupa untuk MSTest)

Saya harus melakukan kombinasi dari beberapa hal yang dinyatakan dalam jawaban lain dan kemudian juga satu sama lain di sini .

VS2017:

  1. BuildTools - Ini dapat ditemukan di halaman unduhan Microsoft , lalu gulir ke bawah ke "Alat untuk Visual Studio 2017" -> "Alat Bangun untuk Visual Studio 2017"
  2. TestAgent - Ini dapat ditemukan di halaman unduhan Microsoft , dan kemudian gulir ke bawah ke "Alat untuk Visual Studio 2017" -> "Agen untuk Visual Studio 2017"
  3. Paket Nuget untuk menyertakan pengujian unit visual studio dll - Dapat ditemukan di sini

Langkah 3 adalah memperbaiki masalah berikut:

"Tidak dapat menyelesaikan referensi ini. Tidak dapat menemukan rakitan" Microsoft.VisualStudio.QualityTools.UnitTestFramework ""

Yang kemudian menyebabkan:

"galat CS0234: Jenis atau nama ruang nama 'VisualStudio' tidak ada di ruang nama 'Microsoft' (apakah Anda kehilangan referensi perakitan?)"

Saya tidak perlu menambahkan referensi apa pun ke proyek. Namun, jalur ke vstest.console.exe terdapat di folder TestAgent (bagi saya itu adalah "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow" )

Andy
sumber
1

Berikut adalah langkah-langkah yang saya ambil agar server build saya menjalankan MsTest tanpa menginstal VS 2012:

  1. Membuat folder direktori 'Mstest' di c: \ dev.
  2. Menyalin 'Mstest.exe' dan 'Mstest.exe.config' dari C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE ke direktori 'Mstest'
  3. Salin Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll ke direktori 'Mstest'
  4. Membuat direktori 'assemblies' di folder 'Mstest'
  5. Ekstrak semua v11 Microsoft.VisualStudio.QualityTools. *. Dll dari C: \ Windows \ assembly ke direktori 'Mstest / assemblies'
  6. Salin semua 'v11' Microsoft.VisualStudio.QualityTools. .dlls dan Microsoft.VisualStudio.TestTools. .dlls dari C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL ke 'Mstest / assemblies'
  7. Salin semua v11 Microsoft.VisualStudio.QualityTools. .dlls dan Microsoft.VisualStudio.TestTools. .dll dari C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies ke 'Mstest / assemblies'
  8. Tambahkan 'assemblies' ke atribut 'privatePath' di 'Mstest.exe.config'
  9. Ekspor 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools dan terapkan ke kotak hudson.
  10. Salin QTAgent32.exe dan QTAgent32.exe.config ke direktori 'MsTest' dari C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE
  11. Tambahkan 'assemblies' ke atribut 'privatePath' di 'QTAgent32.exe.config'
  12. Salin 'msdia110.dll' dari 'C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger' ke 'MsTest / assemblies'
  13. Daftarkan 'msdia110.dll' dengan c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll'(Ini menimbulkan kesalahan, tetapi untuk beberapa alasan masih berfungsi. Saya menjalankannya beberapa kali dan mencoba versi regsvr32.exe yang berbeda sebelum saya memeriksa, tetapi itu ada di registri)

  14. Tambahkan variabel lingkungan 'MSTEST_HOME' dan setel ke 'c: \ dev \ mstest \' atau ke jalur Anda. Saya menggunakan variabel lingkungan dalam skrip build saya.

Debugging kesalahan eksekusi MsTest:

Tambahkan ke 'MsTest.exe.config'

<system.diagnostics> 
  <trace autoflush="true" indentsize="4"> 
    <listeners> 
      <add name="EqtListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\MsTest.log" /> 
    </listeners> 
  </trace> 
  <switches> 
    <add name="EqtTraceLevel" value="Verbose" /> 
  </switches> 
</system.diagnostics>
Dai Le
sumber
0

Jika Anda perlu menjalankan alat webtest mstest.exe maka Anda dapat menginstal uji coba Visual Studio Enterprise dan pastikan untuk menjalankannya setidaknya sekali (cukup memulainya) di bawah akun di mana pengujian akan berjalan tanpa perlu tambahan apa pun. Jadi jika pengujian Anda berjalan di bawah akun Sistem maka Anda perlu menggunakan sesuatu seperti di bawah ini

PS C:\agent> psexec -s cmd.exe
C:\Windows\system32>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\mstest.exe"
Microsoft (R) Test Execution Command Line Tool Version 15.0.27520.0
Copyright (c) Microsoft Corporation. All rights reserved.

Please specify tests to run, or specify the /publish switch to publish results.
For switch syntax, type "MSTest /help"
Gregory Suvalian
sumber
0

MSTest diumumkan untuk pengguna .NET Core . Pengumuman memiliki contoh penggunaan dengan dotnetalat tersebut. Saya sendiri belum memikirkan bagaimana cara mendapatkan mstesteksekusi mandiri .

pengguna7610
sumber
Tautan rusak :-(
Yakobus
1
@James Baru saja memperbaiki tautannya
pengguna7610