VSTest.Console.exe opsi baris perintah

VSTest.Console.exe adalah alat baris perintah untuk menjalankan pengujian. Anda dapat menentukan beberapa opsi dalam urutan apa pun pada baris perintah. Opsi ini tercantum dalam opsi baris perintah Umum.

Nota

Adaptor MSTest di Visual Studio juga berfungsi dalam mode warisan (setara dengan menjalankan pengujian dengan mstest.exe) untuk kompatibilitas. Dalam mode warisan, ia tidak dapat memanfaatkan fitur TestCaseFilter. Adaptor dapat beralih ke mode warisan ketika testsettings file ditentukan, forcelegacymode diatur ke true dalam runsetting file, atau dengan menggunakan atribut seperti HostType.

Untuk menjalankan pengujian otomatis pada komputer berbasis arsitektur ARM, Anda harus menggunakan VSTest.Console.exe.

Buka Perintah Pengembang untuk menggunakan alat baris perintah, atau Anda dapat menemukan alat di %Program Files(x86)%\Microsoft Visual Studio\<versi>\<edisi>\common7\ide\CommonExtensions\<Platform | Microsoft>.

Opsi baris perintah umum

Tabel berikut mencantumkan opsi yang umum digunakan untuk VSTest.Console.exe dan deskripsi singkatnya. Anda dapat melihat ringkasan serupa dengan mengetik VSTest.Console/? pada baris perintah. Untuk referensi lengkap, termasuk sakelar internal dan warisan yang tidak tercantum di sini, lihat opsi baris perintahvstest.console.exe dan khususnya sakelar yang dihilangkan di repositori vstest.

Pilihan Deskripsi
[nama file pengujian] Jalankan pengujian dari file yang ditentukan. Pisahkan beberapa nama file pengujian dengan spasi.
Contoh: mytestproject.dll, mytestproject.dll myothertestproject.exe
/Settings:[nama file] Jalankan pengujian dengan pengaturan tambahan seperti pengumpul data. Untuk informasi selengkapnya, lihat Mengonfigurasi pengujian unit menggunakan file .runsettings
Contoh: /Settings:local.runsettings
/Tests:[nama uji] Jalankan pengujian dengan nama yang berisi nilai yang disediakan. Perintah ini cocok dengan nama pengujian lengkap, termasuk namespace layanan. Untuk menyediakan beberapa nilai, pisahkan dengan koma.
Contoh: /Tests:TestMethod1,testMethod2
Opsi baris perintah /Tests tidak dapat digunakan dengan opsi baris perintah /TestCaseFilter .
/Paralel Menentukan bahwa pengujian dijalankan secara paralel. Secara default, hingga semua inti yang tersedia pada komputer dapat digunakan. Anda dapat mengonfigurasi jumlah inti yang akan digunakan dalam file pengaturan.
/InIsolation Menjalankan pengujian dalam proses yang terisolasi.
Isolasi ini membuat proses vstest.console.exe cenderung tidak dihentikan pada kesalahan dalam pengujian, tetapi pengujian mungkin berjalan lebih lambat.
/TestAdapterPath:[ jalur] Memaksa proses vstest.console.exe untuk menggunakan adaptor pengujian kustom dari jalur tertentu (jika ada) dalam eksekusi pengujian.
Contoh: /TestAdapterPath:[pathToCustomAdapters]
/Platform:[jenis platform] Memaksa arsitektur platform yang diberikan untuk digunakan, bukan platform yang ditentukan dari runtime saat ini. Nilai tidak peka huruf besar/kecil; nilai yang diterima adalah x86, , x64, ARMARM64, S390x, , Ppc64leRiscV64, dan LoongArch64.
Pada Windows, hanya x86 dan x64 yang dapat dipaksa dengan andal; menentukan ARM hasil di x64 pada sebagian besar sistem. Jangan tentukan opsi ini untuk dijalankan pada runtime yang tidak ada dalam daftar nilai yang valid.
/Framework: [versi kerangka kerja] Targetkan versi .NET yang akan digunakan untuk eksekusi pengujian.
Bentuk pendek kerangka kerja modern diterima dan diurai oleh pengurai kerangka kerja NuGet, misalnya net48, , net6.0atau net10.0 (serta bentuk panjang seperti .NETFramework,Version=v4.8 dan .NETCoreApp,Version=v10.0).
Alias warisan Framework35, , Framework40, Framework45FrameworkCore10, dan FrameworkUap10 juga diterima.
TargetFrameworkAttribute digunakan untuk mendeteksi opsi ini secara otomatis dari assembly Anda, dan default ke Framework40 saat atribut tidak ada. Anda harus menentukan opsi ini secara eksplisit jika Anda menghapus TargetFrameworkAttribute dari rakitan .NET Core Anda.
Jika kerangka kerja target ditentukan sebagai Framework35, pengujian berjalan di CLR 4.0 "mode kompatibilitas".
Contoh: /Framework:net8.0
/TestCaseFilter:[ekspresi] Jalankan pengujian yang cocok dengan ekspresi yang diberikan.
< Ekspresi >adalah properti <format>= nilai<>[|<Ekspresi>].
Contoh: /TestCaseFilter:"Priority=1"
Contoh: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"
Opsi baris perintah /TestCaseFilter tidak dapat digunakan dengan opsi baris perintah /Tests .
Untuk informasi tentang membuat dan menggunakan ekspresi, lihat filter TestCase. Saat Anda mengetik filter langsung di shell, lihat Ekspresi filter escape di shell.
/Environment:[NAME]=[VALUE] Mengatur nilai variabel lingkungan untuk proses host pengujian. Membuat variabel jika tidak ada, dan mengambil alih jika tidak. Opsi ini menyiratkan /InIsolation dan memaksa pengujian berjalan dalam proses yang terisolasi. Tentukan opsi beberapa kali untuk mengatur beberapa variabel. Bentuk pendek: /e.
Contoh: /e:VARIABLE1=VALUE1
/? Menampilkan informasi penggunaan.
/Logger:[uri/friendlyname] Tentukan pencatat untuk hasil pengujian. Tentukan parameter beberapa kali untuk mengaktifkan beberapa pencatat.
Contoh: Untuk mencatat hasil ke dalam File Hasil Pengujian Visual Studio (TRX), gunakan
/Logger:trx
[; LogFileName=<Default ke nama file unik>]
Gunakan LogFilePrefix=<prefix> alih-alih LogFileName untuk menyimpan file bertanda waktu terpisah per eksekusi. LogFileName mengatur nama eksplisit dan menimpa file sebelumnya, sedangkan LogFilePrefix tidak.
Untuk informasi selengkapnya, lihat Contoh pengelogan.
/ListTests:[ nama file] Mencantumkan pengujian yang ditemukan dari kontainer pengujian yang diberikan. Bentuk pendek: /lt.
Catatan: Opsi /TestCaseFilter tidak berpengaruh saat mencantumkan pengujian; itu hanya mengontrol pengujian mana yang dijalankan.
/ Menyalahkan Menjalankan pengujian dalam mode menyalahkan. Opsi ini berguna dalam mengisolasi pengujian bermasalah yang menyebabkan host pengujian mengalami crash. Ketika crash terdeteksi, itu membuat file urutan di TestResults/<Guid>/<Guid>_Sequence.xml yang menangkap urutan pengujian yang dijalankan sebelum crash.
Anda juga dapat mengumpulkan crash atau hang dump, misalnya /Blame:CollectDump;DumpType=full atau /Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini. Sakelar yang setara dotnet test adalah --blame-crash dan --blame-hang.
Untuk matriks opsi lengkap dan persyaratan pengumpulan cadangan, lihat Menyalahkan pengumpul data.
/Diag:[ nama file] Menulis log jejak diagnostik ke file yang ditentukan.
Atur tingkat pelacakan dengan /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> (defaultnya adalah verbose).
/ResultsDirectory:[ jalur] Direktori hasil pengujian akan dibuat di jalur yang ditentukan jika tidak ada.
Contoh: /ResultsDirectory:<pathToResultsDirectory>
/ParentProcessId:[parentProcessId] ID Proses Proses Induk yang bertanggung jawab untuk meluncurkan proses saat ini.
/Port:[port] Port untuk koneksi soket dan menerima pesan peristiwa.
/Collect:[dataCollector friendlyName] Mengaktifkan pengumpul data untuk eksekusi pengujian. Informasi selengkapnya.
@[file] Membaca opsi tambahan dari file respons yang ditentukan. Argumen dalam file dipisahkan oleh spasi kosong (spasi atau baris baru) dan kutipan didukung, sehingga opsi dapat mencakup beberapa baris.
Contoh: vstest.console.exe @options.rsp

Ujung

Opsi dan nilai tidak peka huruf besar/kecil.

Contoh

Sintaks untuk menjalankan vstest.console.exe adalah:

vstest.console.exe [TestFileNames] [Options]

Secara default, perintah mengembalikan 0 ketika keluar secara normal, bahkan jika tidak ada pengujian yang ditemukan. Jika Anda ingin mengembalikan nilai bukan nol jika tidak ada pengujian yang ditemukan, gunakan opsi runsetting <TreatNoTestsAsError>true</TreatNoTestsAsError>.

Perintah berikut menjalankan vstest.console.exe untuk pustaka pengujian myTestProject.dll:

vstest.console.exe myTestProject.dll

Perintah berikut menjalankan vstest.console.exe dengan beberapa file pengujian. Pisahkan nama file pengujian dengan spasi:

vstest.console.exe myTestFile.dll myOtherTestFile.dll

Perintah berikut menjalankan vstest.console.exe dengan beberapa opsi. Ini menjalankan pengujian dalam file myTestFile.dll dalam proses terisolasi dan menggunakan pengaturan yang ditentukan dalam file Local.RunSettings. Selain itu, ini hanya menjalankan pengujian yang ditandai "Priority=1", dan mencatat hasilnya ke file .trx.

vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx

Perintah berikut menjalankan vstest.console.exe dengan opsi /blame untuk pustaka pengujian myTestProject.dll:

vstest.console.exe myTestFile.dll /blame

Jika terjadi crash host pengujian, file sequence.xml dihasilkan. File berisi nama pengujian yang sepenuhnya memenuhi syarat dalam urutan eksekusinya hingga dan termasuk pengujian spesifik yang berjalan pada saat crash.

Jika tidak ada crash host pengujian, file sequence.xml tidak akan dihasilkan.

Contoh file sequence.xml yang dihasilkan:

<?xml version="1.0"?>
<TestSequence>
  <Test Name="TestProject.UnitTest1.TestMethodB" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
  <Test Name="TestProject.UnitTest1.TestMethodA" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
</TestSequence>

Dalam hal ini, yang <Test Name> terakhir tercantum adalah pengujian yang berjalan pada saat crash.

Kode keluaran

vstest.console.exe mengembalikan salah satu dari dua kode keluar:

Kode Meaning
0 Sukses. Operasi yang diminta selesai dan, untuk uji coba, semua pengujian yang dijalankan lulus.
1 Kegagalan. Misalnya, satu atau beberapa pengujian gagal, kesalahan eksekusi dilaporkan, baris perintah tidak valid atau hilang, sumber pengujian tidak dapat dimuat, atau eksekusi dibatalkan atau dibatalkan.

Proses ini tidak pernah mengembalikan nilai lain. Saat Anda menjalankan pengujian melalui dotnet test, .NET SDK menampilkan kode keluar bukan nol saat eksekusi gagal dengan cara yang sama.

Ketika penemuan tidak menemukan pengujian yang cocok, runner mencetak peringatan daripada kesalahan, dan secara default masih mengembalikan 0. Untuk membuat eksekusi yang menemukan atau memilih pengembalian 1 tes nol, atur <TreatNoTestsAsError>true</TreatNoTestsAsError> dalam elemen RunConfiguration file .runsettings Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi pengujian unit menggunakan file .runsettings.

Ekspresi filter escape di shell

Ekspresi /TestCaseFilter diurai oleh shell dan platform pengujian Anda, sehingga beberapa karakter memerlukan pelepasan khusus shell sebelum vstest.console.exe menerimanya. Mengutip seluruh ekspresi, seperti dalam contoh sebelumnya dalam artikel ini, menghindari sebagian besar masalah. Kasus-kasus berikut membutuhkan perawatan ekstra:

  • PowerShell: Koma (,) adalah operator array dan titik koma (;) adalah pemisah pernyataan. Kutip seluruh ekspresi filter sehingga diteruskan secara harfiah, misalnya /TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod".

  • Bash dan zsh (Linux dan macOS): Escape ! dengan garis miring terbelakang saat Anda menggunakan !~ operator (tidak berisi), misalnya --filter FullyQualifiedName\!~IntegrationTests dengan dotnet test. Kutip juga nilai yang berisi karakter dengan arti khusus untuk shell, seperti <, , >atau , dalam daftar argumen jenis generik:

    dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
    

Untuk referensi pemfilteran lengkap dan properti yang didukung per kerangka kerja pengujian, lihat filter TestCase.

Contoh pembuatan log

Setiap pencatat mendefinisikan parameternya sendiri. Tidak seperti trx, pencatat konsol memungkinkan Anda mengatur tingkat verbositas. Untuk informasi tambahan, ketik VSTest.Console/? di baris perintah.

Berikut adalah contoh untuk pencatat konsol:

vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed

Tingkat verbositas yang didukung termasuk tenang, minimal, normal, dan terperinci.

Di PowerShell, Anda perlu menggunakan tanda kutip:

vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"

Untuk daftar lengkap pencatat yang tersedia, serta instruksi untuk menulis pencatat Anda sendiri, lihat Melaporkan hasil pengujian di repositori vstest.

Contoh UWP

Untuk UWP, file appxrecipe harus direferensikan alih-alih DLL.

vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe

Variabel lingkungan

Platform pengujian mengenali beberapa variabel lingkungan. Berikut ini adalah yang paling berguna saat Anda menjalankan pengujian dari baris perintah. Untuk daftar lengkapnya, lihat Variabel lingkungan yang dipahami oleh platform pengujian di repositori vstest.

Variable Deskripsi
VSTEST_CONNECTION_TIMEOUT Waktu habis, dalam hitungan detik, untuk membuat koneksi antara komponen platform pengujian (vstest.console.exe, testhost, dan pengumpul data). Standarnya adalah 90. Tingkatkan pada komputer yang lambat atau ketika latensi jaringan menyebabkan batas waktu koneksi.
VSTEST_DIAG Mengaktifkan pembuatan log diagnostik dan menentukan jalur ke file log. Setara dengan opsi /Diag .
VSTEST_DIAG_VERBOSITY Mengatur verbositas pengelogan diagnostik saat VSTEST_DIAG diaktifkan. Nilai yang valid adalah Verbose, Info, Warning, dan Error (defaultnya adalah Verbose).
VSTEST_HOST_DEBUG Atur ke nilai yang tidak kosong untuk mengaktifkan penelusuran kesalahan proses testhost.
VSTEST_RUNNER_DEBUG Atur ke nilai yang tidak kosong untuk mengaktifkan penelusuran kesalahan runner (vstest.console.exe).
VSTEST_DUMP_PATH Mengesampingkan direktori default tempat crash dump yang disalahkan disimpan.
VSTEST_DUMP_FORCEPROCDUMP Atur ke nilai yang tidak kosong untuk memaksa ProcDump digunakan untuk pengumpulan crash dump.
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING Atur ke 1 untuk menonaktifkan pengaturan pengodean UTF-8 pada output konsol.
VSTEST_CONSOLE_PATH Jalur ke vstest.console.exe dapat dieksekusi yang digunakan oleh aplikasi penerusan SDK dotnet test .NET. Setara dengan -p:VSTestConsolePath saat Anda menjalankan dotnet test proyek.