Mengonfigurasi pengujian unit dengan menggunakan file .runsettings

File .runsettings dapat digunakan untuk mengonfigurasi bagaimana 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 dari file .runsettings adalah untuk 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 runsetting bersifat opsional. Jika Anda tidak memerlukan konfigurasi khusus, Anda tidak memerlukan file .runsettings.

Membuat file pengaturan jalankan dan sesuaikan

  1. Tambahkan file pengaturan jalankan 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.

    Tip

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

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

  3. Tentukan file *.runsettings yang Anda inginkan menggunakan salah satu metode berikut:

  4. Jalankan pengujian unit untuk menggunakan pengaturan proses kustom.

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

Tip

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

Tentukan file pengaturan jalankan 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.

Otomatisdeteksi file pengaturan yang dijalankan

Catatan

Ini hanya akan berfungsi untuk file bernama .runsettings.

Untuk mendeteksi secara otomatis file pengaturan yang dijalankan, letakkan di akar solusi Anda.

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

  • Pilih Opsi>Alat>Pengujian>Deteksi Otomatis File runsettings

    Opsi deteksi file runsettings secara otomatis di Visual Studio

  • Pilih Pengujian>Konfigurasikan Pengaturan EKsekusi>Deteksi Otomatis File pengaturan proses

    Mendeteksi menu file runsettings secara otomatis di Visual Studio

Pilih file pengaturan jalankan secara manual

Di IDE, pilih Test>Konfigurasi Pengaturan Eksekusi>Pilih Perluas Solusi File runsettings, lalu pilih file .runsettings.

  • File ini mengambil alih file .runsettings di akar solusi, jika ada, dan diterapkan di semua pengujian yang dijalankan.
  • Pilihan file ini hanya bertahan secara lokal.

Pilih menu file runsettings di seluruh solusi pengujian di Visual Studio

Mengatur properti build

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 di proyek C#, VB, C++, dan F#.
  • File yang ditentukan untuk proyek yang mengambil alih file pengaturan eksekusi lainnya yang ditentukan dalam solusi.
  • Properti MSBuild ini dapat digunakan untuk menentukan jalur ke file runsettings.

Contoh penetapan file .runsettings untuk sebuah proyek:

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

Visual Studio 2019 versi 16.3 dan sebelumnya

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

Pilih menu file pengaturan pengujian di Visual Studio 2019

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

Tentukan file pengaturan jalankan dari baris perintah

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

  1. Buka Prompt Perintah Pengembang untuk Visual Studio.

  2. Masukkan perintah yang mirip dengan:

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

    or

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

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

File *.runsettings

File *.runsettings adalah file XML yang berisi elemen konfigurasi 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>

Setiap 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 Default Nilai
MaxCpuCount 1 Nama opsi peka terhadap 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 lain 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 percakapan) tergantung pada kerangka pengujian seperti MSTest, XUnit, atau NUnit.

Nilai defaultnya adalah 1, yang berarti bahwa hanya satu testhost yang berjalan pada saat yang sama. Nilai 0 khusus memungkinkan testhost sebanyak yang Anda miliki prosesor logis (misalnya, 6, untuk komputer dengan 6 core fisik tanpa multi-utas, atau 12, untuk komputer dengan enam inti fisik dengan multi-utas).

Jumlah DLL berbeda dalam eksekusi menentukan jumlah testhost yang sebenarnya dimulai.
ResultsDirectory Direktori tempat hasil tes 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 rangkaian kerangka kerja yang akan digunakan untuk menjalankan pengujian.

Nilai yang diterima adalah setiap moniker kerangka kerja seperti net48, net472,net6.0, net5.0, netcoreapp3.1, uap10.0 atau nama kerangka 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 (masing-masing net35, net40, net45, netcoreapp1.0 dan uap10.0). Semua nilai tidak peka huruf besar/kecil.

Nilai yang diberikan digunakan untuk menentukan penyedia runtime pengujian yang akan digunakan. Setiap penyedia runtime pengujian harus menghormati rangkaian kerangka kerja yang akan digunakan, tetapi mungkin tidak menghormati versi kerangka kerja yang tepat:

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

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

Untuk UWP, aplikasi proyek pengujian adalah testhost dengan sendirinya, dan menentukan versi aktual UWP yang digunakan.

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

Saat melakukan autodetecting, 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 target umum adalah net40. Untuk runner .NET (pengujian dotnet + DLL), kerangka kerja target umum 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.

Saat autodetecting, arsitektur untuk DLL AnyCPU mungkin berbeda berdasarkan runner. Untuk runner .NET Framework (di Visual Studio, atau vstest.console.exe di baris perintah Pengembang), defaultnya adalah x86. Untuk runner .NET (pengujian dotnet), defaultnya adalah arsitektur proses saat ini.

TreatTestAdapterErrorsAsWarnings salah false, true
TestAdaptersPaths Satu atau lebih jalur ke direktori tempat TestAdapters berada
TestCaseFilter Ekspresi filter dalam nilai> operator><properti><format<[|&<Ekspresi>]. Operator boolean & harus diwakili oleh entitas HTML &. Ekspresi dapat terlampir dalam tanda kurung. Untuk sintaks terperinci tentang struktur ekspresi, lihat vstest/docs/filter.md.
TestSessionTimeout Mengizinkan pengguna untuk menghentikan sesi pengujian saat melebihi batas waktu yang ditentukan. Mengatur batas waktu memastikan bahwa sumber daya dikonsumsi dengan baik dan sesi pengujian dibatasi ke waktu yang ditentukan. 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 melewati mencari testhost.exe, dan memaksa penggunaan testhost.dll.
TreatNoTestsAsError salah benar atau salah
Menentukan nilai Boolean, yang menentukan kode keluar saat tidak ada pengujian yang ditemukan. Jika nilainya dan true tidak ada pengujian yang ditemukan, kode keluar bukan nol dikembalikan. Jika tidak, nol dikembalikan.

Elemen DataCollectors (adapter data diagnostik)

Elemen DataCollectors menentukan pengaturan adapter data diagnostik. Adapter data diagnostik mengumpulkan informasi tambahan tentang lingkungan dan aplikasi yang sedang diuji. Setiap adapter memiliki pengaturan default, dan Anda hanya perlu memberikan 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 digunakan 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 VideoRecorder

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

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

Menyalahkan pengumpul data

Opsi ini dapat membantu Anda mengisolasi pengujian bermasalah yang menyebabkan crash host pengujian. Menjalankan kolektor akan membuat file output (Sequence.xml) di TestResults, yang mencatat urutan pelaksanaan pengujian sebelum crash.

Anda dapat menjalankan kesalahan dalam tiga mode berbeda:

  • Mode file urutan: untuk membuat file dengan daftar pengujian hingga macet
  • 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 dalam <RunSettings> simpul:

<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 eksekusi. Akses parameter menggunakan properti MSTest TestContext.Properties (atau NUnit TestContext):

private string _appUrl;
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 adapter pengujian yang menjalankan metode pengujian yang memiliki atribut TestMethodAttribute.

<MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
    <AssemblyResolution>
      <Directory path="D:\myfolder\bin\" includeSubDirectories="false"/>
    </AssemblyResolution>
</MSTest>
Konfigurasi Default Nilai
ForcedLegacyMode salah Dalam versi Visual Studio yang lebih lama, adaptor MSTest dioptimalkan untuk membuatnya lebih cepat dan lebih dapat diskalakan. Beberapa perilaku, seperti urutan pengujian yang 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.

Kami menyarankan Anda mempertimbangkan untuk merefaktor pengujian Anda untuk memungkinkan Anda menggunakan adapter yang lebih baru.
SettingsFile Anda dapat menentukan file pengaturan pengujian untuk digunakan dengan adapter MSTest di sini. Anda juga dapat menentukan file pengaturan pengujian dari menu pengaturan.

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

<ForcedLegacyMode>true</ForcedLegacyMode>
DeploymentEnabled benar Jika Anda mengatur nilainya ke false, item penyebaran yang telah Anda tentukan dalam metode pengujian tidak akan disalin ke direktori penyebaran.
CaptureTraceOutput benar Ambil pesan teks yang berasal dari Console.Write*, Trace.Write*, Debug.Write* api yang akan dikaitkan dengan pengujian yang sedang berjalan saat ini.
EnableBaseClassTestMethodsFromOtherAssemblies benar Nilai yang menunjukkan apakah akan mengaktifkan penemuan metode pengujian dari kelas dasar di rakitan yang berbeda dari kelas pengujian warisan.
ClassCleanupLifecycle EndOfClass Jika Anda ingin pembersihan kelas terjadi di akhir perakitan, atur ke EndOfAssembly. (Tidak lagi didukung mulai dari MSTest v4 karena EndOfClass adalah default dan hanya Perilaku ClassCleanup )
MapNotRunnableToFailed 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 default, itu classLevel.

<Parallelize><Workers>32</Workers><Scope>MethodLevel</Scope></Parallelize>
TestTimeout 0 Mendapatkan batas waktu kasus pengujian global yang ditentukan.
TreatDiscoveryWarningsAsErrors salah Untuk melaporkan peringatan penemuan pengujian sebagai kesalahan, atur nilai ini ke true.
TreatClassAndAssemblyCleanupWarningsAsErrors salah Untuk melihat kegagalan Anda dalam pembersihan kelas sebagai kesalahan, atur nilai ini ke true.
DeployTestSourceDependencies benar Nilai yang menunjukkan apakah referensi sumber pengujian akan disebarkan.
DeleteDeploymentDirectoryAfterTestRunIsComplete benar Untuk mempertahankan direktori penyebaran setelah uji coba, atur nilai ini ke false.
MapInconclusiveToFailed salah Jika pengujian selesai dengan status tidak meyakinkan, pengujian akan dipetakan ke status yang dilewati di Test Explorer. Jika Anda ingin pengujian yang tidak meyakinkan ditampilkan sebagai gagal, atur nilainya ke true.
AssemblyResolution salah Anda dapat menentukan jalur ke 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 menyertakan 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 konten file .runsettings biasa. Salin kode ini dan edit sesuai 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 di file .runsettings

Variabel lingkungan dapat diatur dalam file .runsettings, yang dapat berinteraksi secara langsung 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 menelurkan proses host pengujian dan tersedia di host.

Contoh

Kode berikut adalah contoh 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.

Catatan

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