Bagikan melalui


Mengonfigurasi pengujian unit dengan menggunakan file .runsettings

File .runsettings dapat digunakan untuk mengonfigurasi cara pengujian unit dijalankan. Misalnya, ini dapat digunakan untuk mengubah versi .NET tempat pengujian dijalankan, direktori untuk hasil pengujian, atau data yang dikumpulkan selama uji coba. Penggunaan umum file .runsettings adalah menyesuaikan analisis cakupan kode .

File runsetting dapat digunakan untuk mengonfigurasi pengujian yang dijalankan dari baris perintah , dari IDE, atau dalam alur kerja build menggunakan Azure Test Plans atau Azure DevOps Server (sebelumnya dikenal sebagai Team Foundation Server (TFS)).

File runsettings bersifat opsional. Jika Anda tidak memerlukan konfigurasi khusus, Anda tidak memerlukan file .runsettings.

Membuat file pengaturan eksekusi dan menyesuaikannya

  1. Tambahkan file pengaturan eksekusi ke solusi Anda. Di Penjelajah Solusi, pada menu pintasan solusi Anda, pilih Tambahkan>Item Baru, dan pilih File XML. Simpan file dengan nama seperti test.runsettings.

    Jika Anda tidak melihat semua templat item, pilih Perlihatkan Semua Templat, lalu pilih templat item.

    Tips

    Nama file tidak masalah, selama Anda menggunakan ekstensi .runsettings.

  2. Tambahkan konten dari file Contoh *.runsettings, lalu sesuaikan dengan kebutuhan Anda seperti yang dijelaskan di bagian berikut.

  3. Tentukan file *.runsettings yang ingin Anda gunakan dengan salah satu metode berikut:

  4. Jalankan pengujian unit untuk menggunakan pengaturan eksekusi kustom.

Jika Anda ingin menonaktifkan dan mengaktifkan pengaturan khusus di IDE, batalkan pilihan atau pilih file pada menu Uji.

Tips

Anda dapat membuat lebih dari satu file .runsettings dalam solusi Anda dan memilihnya sebagai file pengaturan pengujian aktif sesuai kebutuhan.

Tentukan file pengaturan eksekusi di IDE

Metode yang tersedia bergantung pada versi Visual Studio Anda.

Visual Studio 2019 versi 16.4 dan yang lebih baru

Ada tiga cara untuk menentukan file pengaturan eksekusi di Visual Studio 2019 versi 16.4 dan yang lebih baru.

Mendeteksi otomatis file pengaturan jalankan

Nota

Ini hanya akan berfungsi untuk file bernama .runsettings.

Untuk mendeteksi otomatis file pengaturan eksekusi, letakkan di akar solusi Anda.

Jika deteksi otomatis file pengaturan eksekusi diaktifkan, pengaturan dalam file ini diterapkan di semua pengujian yang dijalankan. Anda dapat mengaktifkan deteksi otomatis file runsetting menggunakan dua metode:

  • Buka panelOpsi>, perluas bagianUji>, dan pilih opsi Deteksi file runsettings secara otomatis:

    Cuplikan layar memperlihatkan opsi Deteksi otomatis file runsettings di Visual Studio.

  • Buka dialogOpsi>, perluas bagian Uji>Umum, dan pilih opsi Deteksi Otomatis File runsettings:

    Otomatis mendeteksi opsi file runsettings di Visual Studio

  • Pilih Uji>Konfigurasi Pengaturan Eksekusi>Deteksi Otomatis File runsettings

    Deteksi otomatis menu file runsettings di Visual Studio

Pilih file pengaturan eksekusi secara manual

Di IDE, pilih Uji>Konfigurasi Pengaturan Eksekusi>Pilih file runsettings solusi lebar, lalu pilih file .runsettings.

  • File ini menggantikan file .runsettings di direktori root solusi, jika ada, dan berlaku untuk semua pengujian yang dijalankan.
  • Pilihan file ini hanya bertahan secara lokal.

Pilih menu file runsettings di seluruh solusi pengujian di Visual Studio

Mengatur properti bangun

Tambahkan properti build ke proyek melalui file proyek atau file Directory.Build.props. File pengaturan eksekusi untuk proyek ditentukan oleh properti RunSettingsFilePath.

  • Pengaturan eksekusi tingkat proyek saat ini didukung dalam proyek C#, VB, C++, dan F#.
  • File yang ditentukan untuk proyek mengambil alih file pengaturan eksekusi lain yang ditentukan dalam solusi.
  • Properti MSBuild ini dapat digunakan untuk menentukan jalur ke file runsettings.

Contoh menentukan file .runsettings untuk proyek:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <RunSettingsFilePath>$(MSBuildProjectDirectory)\example.runsettings</RunSettingsFilePath>
  </PropertyGroup>
  ...
</Project>

Visual Studio 2019 versi 16.3 dan yang lebih lama

Untuk menentukan file pengaturan run di IDE, pilih Uji>Pilih File Pengaturan. Telusuri ke dan pilih file .runsettings.

Pilih menu file pengaturan pengujian di Visual Studio 2019

File muncul di menu Uji, dan Anda dapat memilih atau membatalkan pilihannya. Saat dipilih, file pengaturan eksekusi berlaku setiap kali Anda memilih Analisis Cakupan Kode.

Tentukan file pengaturan eksekusi dari baris perintah

Untuk menjalankan pengujian dari baris perintah, gunakan vstest.console.exe, dan tentukan file pengaturan dengan menggunakan parameter /Pengaturan.

  1. Buka Developer Command Prompt untuk Visual Studio.

  2. Masukkan perintah yang mirip dengan:

    vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage /Settings:CodeCoverage.runsettings
    

    atau

    vstest.console.exe --settings:test.runsettings test.dll
    

Untuk informasi selengkapnya, lihat VSTest.Console.exe opsi baris perintah.

File *.runsettings itu

File *.runsettings adalah file XML yang berisi elemen konfigurasi yang berbeda dalam elemen runSettings. Bagian yang mengikuti detail elemen yang berbeda. Untuk sampel lengkap, lihat Contoh *.runsettings file.

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- configuration elements -->
</RunSettings>

Masing-masing elemen konfigurasi bersifat opsional karena memiliki nilai default.

Elemen RunConfiguration

<RunConfiguration>
    <MaxCpuCount>1</MaxCpuCount>
    <ResultsDirectory>.\TestResults</ResultsDirectory>
    <TargetPlatform>x86</TargetPlatform>
    <TargetFrameworkVersion>net6.0</TargetFrameworkVersion>
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>
    <TestCaseFilter>(TestCategory != Integration) &amp; (TestCategory != UnfinishedFeature)</TestCaseFilter>
    <TestSessionTimeout>10000</TestSessionTimeout>
    <TreatNoTestsAsError>true</TreatNoTestsAsError>
</RunConfiguration>

Elemen RunConfiguration dapat menyertakan elemen berikut:

Simpul Bawaan Nilai
MaxCpuCount 1 Nama opsi peka huruf besar/kecil dan mudah salah eja sebagai MaxCPUCount.

Pengaturan ini mengontrol tingkat paralelisme pada tingkat proses. Gunakan 0 untuk mengaktifkan paralelisme tingkat proses maksimum.

Pengaturan ini menentukan jumlah maksimum DLL pengujian, atau kontainer pengujian lainnya yang dapat berjalan secara paralel. Setiap DLL berjalan dalam proses testhost sendiri, dan diisolasi pada tingkat proses dari pengujian di DLL pengujian lainnya. Pengaturan ini tidak memaksa pengujian di setiap DLL pengujian untuk dijalankan secara paralel. Mengontrol eksekusi paralel dalam DLL (pada tingkat utas) tergantung pada kerangka kerja pengujian seperti MSTest, XUnit, atau NUnit.

Nilai default adalah 1, yang berarti bahwa hanya satu testhost yang berjalan secara bersamaan. Nilai khusus 0 memungkinkan jumlah host uji sebanyak prosesor logis yang Anda miliki (misalnya, 6, untuk komputer dengan 6 inti fisik tanpa multi-utas, atau 12, untuk komputer dengan 6 inti fisik dan multi-utas).

Jumlah DLL yang berbeda dalam proses menentukan jumlah testhosts yang sebenarnya dimulai.
DirektoriHasil Direktori tempat hasil pengujian ditempatkan. Jalur relatif terhadap direktori yang berisi file .runsettings.
TargetFrameworkVersion net40 atau netcoreapp1.0 Hilangkan seluruh tag ini untuk mendeteksi secara otomatis.

Pengaturan ini menentukan versi kerangka kerja, atau keluarga kerangka kerja yang akan digunakan untuk menjalankan pengujian.

Nilai yang diterima adalah moniker kerangka kerja apa pun seperti net48, net472,net6.0, net5.0, netcoreapp3.1, uap10.0 atau nama kerangka kerja lengkap yang valid seperti.NETFramework,Version=v4.7.2 atau .NETCoreApp,Version=v6.0.0. Untuk kompatibilitas mundur Framework35, Framework40, Framework45, FrameworkCore10, FrameworkUap10 diterima, artinya (net35, net40, net45, netcoreapp1.0 dan uap10.0 masing-masing). Semua nilai tidak dipengaruhi oleh perbedaan huruf besar atau kecil.

Nilai yang disediakan digunakan untuk menentukan penyedia runtime pengujian yang akan digunakan. Setiap penyedia runtime pengujian harus mematuhi keluarga framework yang digunakan, tetapi mungkin tidak mematuhi versi framework yang tepat.

Untuk .NET Framework 4.5.1 - 4.8, digunakan testhost yang dibangun dengan versi tepat yang ditentukan. Untuk nilai di luar rentang tersebut, testhost .NET Framework 4.5.1 digunakan.

Untuk .NET, <TargetFramework> proyek pengujian (atau lebih tepatnya runtimeconfig.json) menentukan versi aktual.

Untuk UWP, aplikasi proyek pengujian adalah testhost dalam dirinya sendiri dan menentukan versi UWP sebenarnya yang digunakan.

Hilangkan elemen TargetFrameworkVersion dari file .runsettings untuk secara otomatis menentukan versi kerangka kerja dari biner bawaan.

Saat mendeteksi secara otomatis, semua kerangka kerja target disatukan ke dalam satu kerangka kerja umum. Ketika versi yang berbeda dari rangkaian kerangka kerja target yang sama ditemukan, versi yang lebih baru dipilih (misalnya, net452, net472, net48 = net48).

Untuk .NET Framework runner (di Visual Studio, atau vstest.console.exe di baris perintah Pengembang) kerangka kerja target umumnya adalah net40. Untuk .NET runner (dotnet test + DLL), kerangka kerja target yang umum digunakan diatur ke netcoreapp1.0.
TargetPlatform x86 Hilangkan seluruh tag ini untuk mendeteksi secara otomatis.

Pengaturan ini menentukan arsitektur yang akan digunakan untuk menjalankan pengujian. Nilai yang mungkin adalah x86, x64, ARM, ARM64, S390x.

Ketika melakukan deteksi otomatis, arsitektur untuk DLL AnyCPU mungkin berbeda tergantung pada runner. Untuk .NET Framework runner (di Visual Studio, atau vstest.console.exe di baris perintah Pengembang), defaultnya adalah x86. Untuk .NET runner (uji dotnet), defaultnya adalah arsitektur proses saat ini.

PerlakukanKesalahanAdaptorPengujianSebagaiPeringatan palsu salah, benar
TestAdaptersPaths Satu atau beberapa jalur ke direktori tempat TestAdapters berada
TestCaseFilter Ekspresi filter dalam format <properti><operator><nilai>[|& Ekspresi<>]. Operator boolean & harus diwakili oleh entitas HTML &. Ungkapan dapat diapit dalam tanda kurung. Untuk sintaks terperinci tentang struktur ekspresi, lihat vstest/docs/filter.md.
TestSessionTimeout Memungkinkan pengguna untuk mengakhiri sesi pengujian ketika melebihi batas waktu tertentu, yang ditentukan dalam milidetik. Mengatur batas waktu memastikan bahwa sumber daya dikonsumsi dengan baik dan sesi pengujian dibatasi ke waktu yang ditetapkan. Pengaturan ini tersedia di Visual Studio 2017 versi 15.5 dan yang lebih baru.
dotnetHostPath Tentukan jalur kustom ke host dotnet yang digunakan untuk menjalankan testhost. Ini berguna saat Anda membangun dotnet Anda sendiri, misalnya saat membangun repositori dotnet/runtime. Menentukan opsi ini akan melewati pencarian testhost.exedan memaksa penggunaan testhost.dll.
TreatNoTestsAsError palsu benar atau salah
Tentukan nilai Boolean, yang menentukan kode keluar ketika tidak ada pengujian yang ditemukan. Jika nilainya true dan tidak ada pengujian yang ditemukan, kode keluar bukan nol dikembalikan. Jika tidak, nol dikembalikan.

Elemen PengumpulData (penghubung data diagnostik)

Elemen DataCollectors menentukan pengaturan adaptor data diagnostik. Adaptor data diagnostik mengumpulkan informasi tambahan tentang lingkungan dan aplikasi yang sedang diuji. Setiap adaptor memiliki pengaturan default, dan Anda hanya perlu menyediakan pengaturan jika Anda tidak ingin menggunakan default.

<DataCollectionRunSettings>
  <DataCollectors>
    <!-- data collectors -->
  </DataCollectors>
</DataCollectionRunSettings>

Pengumpul data CodeCoverage

Pengumpul data cakupan kode membuat log bagian mana dari kode aplikasi yang telah diuji dalam pengujian. Untuk informasi terperinci tentang menyesuaikan pengaturan untuk cakupan kode, lihat Menyesuaikan analisis cakupan kode.

<DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
  <Configuration>
    <CodeCoverage>
      <ModulePaths>
        <Exclude>
          <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
        </Exclude>
      </ModulePaths>

      <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
      <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
      <CollectFromChildProcesses>True</CollectFromChildProcesses>
      <CollectAspDotNet>False</CollectAspDotNet>
    </CodeCoverage>
  </Configuration>
</DataCollector>

Pengumpul data perekam video

Pengumpul data video mengambil rekaman layar saat pengujian dijalankan. Rekaman ini berguna untuk memecahkan masalah pengujian UI. Pengumpul data video tersedia di Visual Studio 2017 versi 15.5 dan yang lebih baru. Untuk contoh pengonfigurasian pengumpul data ini, lihat file Contoh *.runsettings.

Untuk menyesuaikan jenis adaptor data diagnostik lainnya, gunakan file pengaturan pengujian .

Menyalahkan pengumpul data

Opsi ini dapat membantu Anda mengisolasi tes bermasalah yang menyebabkan host pengujian mengalami crash. Menjalankan kolektor menghasilkan file output (Sequence.xml) di TestResults, yang menangkap urutan eksekusi pengujian sebelum terjadi kecelakaan sistem.

Anda dapat menjalankan "blame" dalam tiga mode berbeda.

  • Mode urutan file: untuk membuat file dengan daftar tes hingga hang.
  • Mode crash dump: untuk membuat cadangan saat testhost crash
  • Mode hang dump: untuk membuat cadangan saat pengujian tidak selesai sebelum batas waktu yang diberikan

Konfigurasi XML harus ditempatkan langsung ke simpul <RunSettings>:

<RunSettings>
  <RunConfiguration>
  </RunConfiguration>
  <LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="blame" enabled="True" />
    </Loggers>
  </LoggerRunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <!-- Enables blame -->
      <DataCollector friendlyName="blame" enabled="True">
        <Configuration>
          <!-- Enables crash dump, with dump type "Full" or "Mini".
          Requires ProcDump in PATH for .NET Framework. -->
          <CollectDump DumpType="Full" />
          <!-- Enables hang dump or testhost and its child processes 
          when a test hangs for more than 10 minutes. 
          Dump type "Full", "Mini" or "None" (just kill the processes). -->
          <CollectDumpOnTestSessionHang TestTimeout="10min" HangDumpType="Full" />
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

TestRunParameters

<TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="docsUrl" value="https://learn.microsoft.com" />
</TestRunParameters>

Parameter uji coba menyediakan cara untuk menentukan variabel dan nilai yang tersedia untuk pengujian pada waktu proses. Akses parameter menggunakan properti TestContext.Properties MSTest (atau NUnit TestContext):

public TestContext TestContext { get; set; }

[TestMethod] // [Test] for NUnit
public void HomePageTest()
{
    string appUrl = TestContext.Properties["webAppUrl"];
}

Untuk menggunakan parameter uji coba, tambahkan properti TestContext publik ke kelas pengujian Anda.

Elemen LoggerRunSettings

Bagian LoggerRunSettings menentukan satu atau beberapa pencatat yang akan digunakan untuk uji coba. Pencatat yang paling umum adalah konsol, File Hasil Pengujian Visual Studio (trx), dan html.

<LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="console" enabled="True">
        <Configuration>
            <Verbosity>quiet</Verbosity>
        </Configuration>
      </Logger>
      <Logger friendlyName="trx" enabled="True">
        <Configuration>
          <LogFileName>foo.trx</LogFileName>
        </Configuration>
      </Logger>
      <Logger friendlyName="html" enabled="True">
        <Configuration>
          <LogFileName>foo.html</LogFileName>
        </Configuration>
      </Logger>
    </Loggers>
  </LoggerRunSettings>

Elemen MSTest

Pengaturan ini khusus untuk adaptor pengujian yang menjalankan metode pengujian yang memiliki atribut TestMethodAttribute.

<MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <ConsiderFixturesAsSpecialTests>False</ConsiderFixturesAsSpecialTests>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
</MSTest>
Konfigurasi Bawaan Nilai
ModeLegacyPaksa palsu Dalam versi Visual Studio yang lebih lama, adaptor MSTest dioptimalkan untuk membuatnya lebih cepat dan lebih dapat diskalakan. Beberapa perilaku, seperti urutan pengujian dijalankan, mungkin tidak persis seperti pada edisi Visual Studio sebelumnya. Atur nilai ke true untuk menggunakan adaptor pengujian yang lebih lama.

Misalnya, Anda dapat menggunakan pengaturan ini jika Anda memiliki file app.config yang ditentukan untuk pengujian unit.

Sebaiknya pertimbangkan untuk memfaktorkan ulang pengujian untuk memungkinkan Anda menggunakan adaptor yang lebih baru.
File Pengaturan Anda dapat menentukan file pengaturan pengujian untuk digunakan dengan adaptor MSTest di sini. Anda juga dapat menentukan file pengaturan pengujian dari menu pengaturan.

Jika Anda menentukan nilai ini, Anda juga harus mengatur ForcedLegacyMode ke true.

<ForcedLegacyMode>true</ForcedLegacyMode>
PemutaranAktif benar Jika Anda mengatur nilai ke false, item penyebaran yang telah Anda tentukan dalam metode pengujian Anda tidak disalin ke direktori penyebaran.
CaptureTraceOutput benar Ambil pesan teks yang berasal dari Console.Write*, Trace.Write*, Debug.Write* API yang akan dikaitkan dengan pengujian saat ini.
AktifkanMetodeUjiKelasDasarDariMajelisLain benar Nilai yang menunjukkan apakah akan mengaktifkan penemuan metode pengujian dari kelas dasar yang berada di rakitan berbeda dengan kelas pengujian pewaris.
SiklusPemeliharaanKelas EndOfClass Jika Anda ingin pembersihan kelas terjadi di akhir perakitan, atur ke EndOfAssembly. (Tidak lagi didukung mulai dari MSTest v4 karena EndOfClass adalah perilaku default dan hanya ClassCleanup)
PetaTidakDapatDijalankanMenjadiGagal benar Nilai yang menunjukkan apakah hasil yang tidak dapat dijalankan dipetakan ke pengujian yang gagal.
Paralelkan Digunakan untuk mengatur pengaturan paralelisasi:

Pekerja: Jumlah utas/pekerja yang akan digunakan untuk paralelisasi, yang secara default adalah jumlah prosesor pada komputer saat ini.

Cakupan: Cakupan paralelisasi. Anda dapat mengaturnya ke MethodLevel. Secara bawaan, itu adalah ClassLevel.

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
TestTimeout 0 Mendapatkan batas waktu kasus pengujian global yang ditentukan.
PerlakukanPeringatanPenemuanSebagaiKesalahan palsu Untuk melaporkan peringatan penemuan pengujian sebagai kesalahan, atur nilai ini ke true.
PerlakukanPeringatanPembersihanKelasDanMajelisSebagaiKesalahan palsu Untuk melihat kegagalan Anda dalam pembersihan kelas sebagai kesalahan, atur nilai ini ke true.
DeployTestSourceDependencies benar Nilai yang menunjukkan apakah referensi sumber pengujian akan di-deploy.
HapusDirektoriPenyebaranSetelahPengujianSelesai benar Untuk mempertahankan direktori penyebaran setelah uji coba, atur nilai ini ke false.
PetaTidakTentuMenjadiGagal palsu Jika tes selesai dengan status meragukan, statusnya dipetakan sebagai status dilewati di Test Explorer. Jika Anda ingin pengujian yang tidak meyakinkan ditampilkan sebagai gagal, atur nilai ke true.
PertimbangkanFixturesAsSpecialTests palsu Untuk menampilkan AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup sebagai entri individual di Visual Studio dan Visual Studio Code Test Explorer dan log .trx, atur nilai ini ke benar
AssemblyResolution palsu Anda dapat menentukan jalur untuk rakitan tambahan saat menemukan dan menjalankan pengujian unit. Misalnya, gunakan jalur ini untuk rakitan dependensi yang tidak berada di direktori yang sama dengan rakitan pengujian. Untuk menentukan jalur, gunakan elemen Jalur Direktori. Jalur dapat mencakup variabel lingkungan.

<AssemblyResolution> <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/> </AssemblyResolution>

Perhatikan bahwa fitur ini hanya sedang diterapkan saat menggunakan target .NET Framework.

Contoh file .runsettings

XML berikut menunjukkan isi file .runsettings yang khas. Salin kode ini dan edit agar sesuai dengan kebutuhan Anda.

Setiap elemen file bersifat opsional karena memiliki nilai default.

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration>
    <!-- Use 0 for maximum process-level parallelization. This does not force parallelization within the test DLL (on the thread-level). You can also change it from the Test menu; choose "Run tests in parallel". Unchecked = 1 (only 1), checked = 0 (max). -->
    <MaxCpuCount>1</MaxCpuCount>
    <!-- Path relative to directory that contains .runsettings file-->
    <ResultsDirectory>.\TestResults</ResultsDirectory>

    <!-- Omit the whole tag for auto-detection. -->
    <!-- [x86] or x64, ARM, ARM64, s390x  -->
    <!-- You can also change it from the Test menu; choose "Processor Architecture for AnyCPU Projects" -->
    <TargetPlatform>x86</TargetPlatform>

    <!-- Any TargetFramework moniker or omit the whole tag for auto-detection. -->
    <!-- net48, [net40], net6.0, net5.0, netcoreapp3.1, uap10.0 etc. -->
    <TargetFrameworkVersion>net40</TargetFrameworkVersion>

    <!-- Path to Test Adapters -->
    <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>

    <!-- TestCaseFilter expression -->
    <TestCaseFilter>(TestCategory != Integration) &amp; (TestCategory != UnfinishedFeature)</TestCaseFilter>

    <!-- TestSessionTimeout was introduced in Visual Studio 2017 version 15.5 -->
    <!-- Specify timeout in milliseconds. A valid value should be greater than 0 -->
    <TestSessionTimeout>10000</TestSessionTimeout>

    <!-- true or false -->
    <!-- Value that specifies the exit code when no tests are discovered -->
    <TreatNoTestsAsError>true</TreatNoTestsAsError>
  </RunConfiguration>

  <!-- Configurations for data collectors -->
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Exclude>
                <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
              </Exclude>
            </ModulePaths>

            <!-- We recommend you do not change the following values: -->
            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>

          </CodeCoverage>
        </Configuration>
      </DataCollector>

      <DataCollector uri="datacollector://microsoft/VideoRecorder/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder.VideoRecorderDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Screen and Voice Recorder">
        <!--Video data collector was introduced in Visual Studio 2017 version 15.5 -->
        <Configuration>
          <!-- Set "sendRecordedMediaForPassedTestCase" to "false" to add video attachments to failed tests only -->
          <MediaRecorder sendRecordedMediaForPassedTestCase="true"  xmlns="">           ​
            <ScreenCaptureVideo bitRate="512" frameRate="2" quality="20" />​
          </MediaRecorder>​
        </Configuration>
      </DataCollector>

      <!-- Configuration for blame data collector -->
      <DataCollector friendlyName="blame" enabled="True">
      </DataCollector>

    </DataCollectors>
  </DataCollectionRunSettings>

  <!-- Parameters used by tests at run time -->
  <TestRunParameters>
    <Parameter name="webAppUrl" value="http://localhost" />
    <Parameter name="webAppUserName" value="Admin" />
    <Parameter name="webAppPassword" value="Password" />
  </TestRunParameters>

  <!-- Configuration for loggers -->
  <LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="console" enabled="True">
        <Configuration>
            <Verbosity>quiet</Verbosity>
        </Configuration>
      </Logger>
      <Logger friendlyName="trx" enabled="True">
        <Configuration>
          <LogFileName>foo.trx</LogFileName>
        </Configuration>
      </Logger>
      <Logger friendlyName="html" enabled="True">
        <Configuration>
          <LogFileName>foo.html</LogFileName>
        </Configuration>
      </Logger>
      <Logger friendlyName="blame" enabled="True" />
    </Loggers>
  </LoggerRunSettings>

  <!-- Adapter Specific sections -->

  <!-- MSTest adapter -->
  <MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
  </MSTest>

</RunSettings>

Tentukan variabel lingkungan dalam file .runsettings

Variabel lingkungan dapat diatur dalam file .runsettings, yang dapat langsung berinteraksi dengan host pengujian. Menentukan variabel lingkungan dalam file .runsettings diperlukan untuk mendukung proyek nontrivial yang memerlukan pengaturan variabel lingkungan seperti DOTNET_ROOT. Variabel ini diatur saat meluncurkan proses host uji dan tersedia di host.

Contoh

Kode berikut adalah sampel file .runsettings yang meneruskan variabel lingkungan:

<?xml version="1.0" encoding="utf-8"?>
<!-- File name extension must be .runsettings -->
<RunSettings>
  <RunConfiguration>
    <EnvironmentVariables>
      <!-- List of environment variables we want to set-->
      <DOTNET_ROOT>C:\ProgramFiles\dotnet</DOTNET_ROOT>
      <SDK_PATH>C:\Codebase\Sdk</SDK_PATH>
    </EnvironmentVariables>
  </RunConfiguration>
</RunSettings>

Node RunConfiguration harus berisi node EnvironmentVariables. Variabel lingkungan dapat ditentukan sebagai nama elemen dan nilainya.

Nota

Karena variabel lingkungan ini harus selalu diatur ketika host pengujian dimulai, pengujian harus selalu berjalan dalam proses terpisah. Untuk ini, bendera /InIsolation akan diatur ketika ada variabel lingkungan sehingga host pengujian selalu dipanggil.