Saya memiliki perpustakaan kelas inti dotnet sederhana dengan metode pengujian XUnit tunggal:
TestLib.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.SDK" Version="15.9.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.console" Version="2.4.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit.runners" Version="2.0.0" />
</ItemGroup>
</Project>
BasicTest.cs:
using Xunit;
namespace TestLib
{
public class BasicTest
{
[Fact(DisplayName = "Basic unit test")]
[Trait("Category", "unit")]
public void TestStringHelper()
{
var sut = "sut";
var verify = "sut";
Assert.Equal(sut, verify);
}
}
}
Jika saya memasukkan proyek di CLI dan mengetik dotnet build
proyek membangun. Jika saya mengetik, dotnet test
saya mendapatkan ini:
C:\git\Testing\TestLib> dotnet test
C:\git\Testing\TestLib\TestLib.csproj : warning NU1701: Package 'xunit.runner.visualstudio 2.4.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Build started, please wait...
C:\git\Testing\TestLib\TestLib.csproj : warning NU1701: Package 'xunit.runner.visualstudio 2.4.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Build completed.
Test run for C:\git\Testing\TestLib\bin\Debug\netstandard2.0\TestLib.dll(.NETStandard,Version=v2.0)
Microsoft (R) Test Execution Command Line Tool Version 16.0.0-preview-20181205-02
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
Unable to find C:\git\Testing\TestLib\bin\Debug\netstandard2.0\testhost.dll. Please publish your test project and retry.
Test Run Aborted.
Apa yang perlu saya ubah untuk menjalankan pengujian?
Jika membantu, VS Code juga tidak menampilkan pengujian di penjelajah pengujiannya.
c#
unit-testing
.net-core
xunit.net
Matt W.
sumber
sumber
Jawaban:
Dalam kasus saya, masalahnya adalah saya menargetkan .NET Core 2.0 dan beralih ke .NET Core 2.1 memecahkan masalah. Namun saya menggunakan Microsoft.NET.Test.SDK v16.4.0, bukan 15.9.0.
sumber
Menginstal
Microsoft.NET.Test.Sdk
paket dari pengelola paket nuget memecahkan masalah saya.sumber
xunit
,xunit.runner.visualstudio
danMicrosoft.NET.Test.Sdk
ke proyek, masih hasil yang sama. Saya pikir ada faktor lain yang berperan ...netstandard2.0
proyek, bukannetcoreapp2.2
proyek. Segera setelah saya beralih ke yang terakhir, itu berhasil. Satu-satunya paket nuget yang saya butuhkan adalahxunit
,xunit.runner.visualstudio
danMicrosoft.NET.Test.Sdk
.dotnet clean
Saya telah membuat perpustakaan kelas dan mencoba menggunakan paket XUnit NuGet di dalamnya.
Apa yang seharusnya saya lakukan adalah membuat proyek XUnit menggunakan perintah ini:
dotnet new xunit -n TestProject
Saya menemukan halaman yang bermanfaat ini .
sumber
--force
untuk memaksanya membangun kembali proyek sebagai proyek uji xUnit. Sesuai komentar @ Manfred, Anda harus memperbarui / menambahkan kembali referensi proyek apa pun yang Anda miliki dalam proyek itu.xunit.runner.visualstudio
yang dapat Anda temukan di nuget.org/packages/xunit.runner.visualstudioDalam kasus saya, masalahnya adalah saya memiliki proyek ekstensi untuk xunit. Ada juga proyek uji untuk menguji ekstensi. Ketika saya menjalankan
dotnet test
solusi saya, proyek ekstensi saya juga diambil sebagai proyek uji unit (saya butuh waktu untuk menyadari hal ini). Alasannya adalah karena ia mereferensikan beberapa paket xunit. Salah satu paket xunit ini secara otomatis menyetel<IsTestProject>true</IsTestProject>
properti di file csprj Anda. Ini sebenarnya bagus karena 99,99% project yang mereferensikan xunit sebenarnya adalah unit test. Saya akhirnya bisa menyelesaikan ini dengan mengatur secara eksplisit<PropertyGroup> ... <IsTestProject>false</IsTestProject> ... </PropertyGroup>
Secara manual di file csproj saya. Kemudian masalahnya hilang.
sumber
Ini terjadi pada saya setelah memperbarui Microsoft.NET.Test.Sdk dari v16.2.0 ke v16.4.0 dengan
<TargetFramework>netcoreapp2.0</TargetFramework>
. Memperbarui untuk<TargetFramework>netcoreapp3.0</TargetFramework>
menyelesaikan masalah saya.sumber
Perbaiki dengan menginstal
xunit.runner.visualstudio
.sumber
Jika Anda menggunakan xUnit, pastikan jenis proyek Anda bukan sebagai netstanderd. Karena xUnit tidak mendukung netstanderd , ubah ke coreapp2.0 atau lainnya.
sumber
Saya telah mengalami ini beberapa kali dan saya selalu lupa apa yang terjadi. Baru-baru ini saya memiliki:
Paket untuk proyek uji saya:
Saya melihat:
Dan semua yang perlu saya lakukan adalah menambahkan paket nuget yang hilang ke proyek pengujian saya: "Microsoft.NET.Test.SDK"
Semuanya kembali normal pada saat ini.
sumber
Saya menemukan masalah kompatibilitas yang sangat menarik dengan suatu versi. Saya melakukan upgrade seperti praktik biasa, kode saya, dan saya beralih ke xUnit.runner.visualstudio 2.4.2. Itu berhenti bekerja untuk .Net Core 3.1. Saya harus menurunkan versi ke 2.4.1 dan itu mulai berfungsi kembali.
sumber
Saya sedang membangun proyek uji netcoreapp2.2 dan kemudian mencoba untuk menjalankan
dotnet vstest
dari folder bin. Saya perhatikan bahwa Microsoft Test DLL dari:<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
tidak di-output ke folder bin saya. Alih-alih hanya membangun, saya menjalankan publikasi yang memang menyertakan DLL yang diperlukan di folder keluaran dan saya kemudian dapat menjalankan
dotnet vstest
dari sana.sumber
Jika Anda menargetkan netstandard2.0, ini tidak akan berhasil. Jika menggunakan .NET Core. pastikan .csproj berisi baris berikut:
<TargetFramework>netcoreapp3.0</TargetFramework>
dan juga berisi paket
Microsoft.NET.Test.Sdk
sumber
masalah yang sama yang saya hadapi untuk proyek Nunit (.net core 3.1). Saya menggunakan Microsoft.NET.Test.SDK v16.6.1, saya menurunkan versinya menjadi 15.9.0. Dan itu mulai bekerja
sumber
Mengalami kesalahan ini, akar penyebabnya adalah pengujian mencapai panjang maksimum untuk jalur Windows (MAX_PATH), yang didefinisikan sebagai 260 karakter.
sumber
Jika Anda menjalankan proyek dengan kloning daripada Solusi menginstal Microsoft.NET.Test.Sdk. Cara: Tools> Nuget Package Manager> Mengelola Paket Nuget Untuk Solusi ...> Cari Microsoft.NET.Test.Sdk dan instal untuk proyek pengujian Anda.
sumber
Ini juga bisa disebabkan oleh secara tidak sengaja mencoba menjalankan proyek non-tes, ini biasanya terjadi ketika filter file tes Anda terlalu lebar.
sumber
Mendapat kesalahan ini, saat mencoba men-debug pengujian unit. Di bawah ini adalah langkah-langkah yang saya coba.
Yay !!! Berhasil :-) Jangan pernah melewatkan untuk mencoba langkah terakhir ;-) Semoga ini bisa membantu seseorang seperti saya.
sumber