Testhost.dll খুঁজে পেতে অক্ষম। আপনার পরীক্ষা প্রকল্প প্রকাশ করুন এবং আবার চেষ্টা করুন


98

আমার একক XUnit পরীক্ষা পদ্ধতি সহ একটি সাধারণ ডটনেট কোর বর্গ গ্রন্থাগার রয়েছে:

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);
        }
    }
}

যদি আমি সিএলআইতে প্রকল্পটি প্রবেশ করি এবং dotnet buildপ্রজেক্ট বিল্ডগুলি টাইপ করি। আমি টাইপ করলে dotnet testআমি এটি পেতে:

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.

পরীক্ষা চালানোর জন্য আমার কী পরিবর্তন করতে হবে?

যদি এটি সহায়তা করে তবে ভিএস কোডও এর পরীক্ষামূলক এক্সপ্লোরারের পরীক্ষাগুলি প্রদর্শন করছে না।


আমার ক্ষেত্রে এটি ছিল যে আপনি প্রকৃতপক্ষে নেটস্ট্যান্ডার্ড ২.০ এর বিরুদ্ধে পরীক্ষা চালাতে পারবেন না, কারণ এটি একটি এপিআই সংজ্ঞা, রানটাইম নয়। আপনি যদি টিএফএমটি নেট ৪7272২ এ স্যুইচ করেন তবে জিনিসগুলি ঠিকঠাকভাবে কাজ করে। বিকল্প হিসাবে, আপনি উদাহরণস্বরূপ নেটকোর + নেট 472 এ মাল্টি-টার্গেট করতে পারেন এবং উভয়ের বিরুদ্ধে চালাতে পারেন।
kzu

উত্তর:


25

আমার ক্ষেত্রে, সমস্যাটি হ'ল আমি .NET কোর 2.0 কে টার্গেট করছি এবং নেট নেট 2.1 এ স্যুইচ করায় সমস্যার সমাধান হয়েছে। তবে আমি 15.9.0 এর পরিবর্তে মাইক্রোসফ্ট.নেট.টেষ্ট.এসডিকে v16.4.0 ব্যবহার করছিলাম।


149

Microsoft.NET.Test.Sdkনুগেট প্যাকেজ ম্যানেজারের কাছ থেকে প্যাকেজ ইনস্টল করা আমার সমস্যার সমাধান করেছে।


এটি ইতিমধ্যে আমার পোস্টে অন্তর্ভুক্ত ছিল - তবে আপনি ঠিক বলেছেন: ডটনেট কোর ছাড়াই ইউনিট পরীক্ষা চালানোর ক্ষেত্রে বড় সমস্যা হবে।
ম্যাট ডাব্লু

4
"মাইক্রোসফ্ট.নেট.টেষ্ট.এসডিকে" অনুপস্থিত অংশ ছিল যখন আপনি কোনও শ্রেণিকালীন গ্রন্থাগার প্রকল্প যুক্ত করেন এবং এটিকে একটি পরীক্ষামূলক প্রকল্পে পরিণত করেন। সম্ভবত সবচেয়ে ভাল কাজটি হ'ল নতুন পরীক্ষার প্রকল্প যুক্ত করা এবং তারপরে রাইনো বা মোক ইত্যাদি প্রয়োজনীয় ন্যুগেট প্যাকেজ যুক্ত করা ...
ইয়াওয়ার মুর্তজা

4
.NET স্ট্যান্ডার্ড 2.0 লিব তৈরি করা হয়েছে xunit, xunit.runner.visualstudioএবং Microsoft.NET.Test.Sdkপ্রজেক্টে এখনও একই ফলাফল। আমি মনে করি খেলতে এখনও আরও একটি কারণ আছে ...
ম্যানফ্রেড

12
আমার ক্ষেত্রে সমস্যাটি netstandard2.0প্রকল্পের পরিবর্তে একটি প্রকল্প তৈরির কারণে হয়েছিল netcoreapp2.2। যত তাড়াতাড়ি আমি উত্তর দিকে স্যুইচ, এটি কাজ করে। আমার প্রয়োজন কেবলমাত্র নুগেট প্যাকেজগুলি ছিল xunit, xunit.runner.visualstudioএবং Microsoft.NET.Test.Sdk
ম্যানফ্রেড

4
মাইক্রোসফট.নেট.স্টেস্ট.এসডি.কে ইনস্টল করা আমার dotnet clean
পক্ষেও

24

আমি একটি ক্লাস লাইব্রেরি তৈরি করেছি এবং এতে XUnit নিউগেট প্যাকেজটি ব্যবহার করার চেষ্টা করেছি।

আমার যা করা উচিত ছিল তা এই কমান্ডটি ব্যবহার করে একটি XUnit প্রকল্প তৈরি করা হয়েছিল: dotnet new xunit -n TestProject

আমি এই সহায়ক পৃষ্ঠাটি পেয়েছি ।


4
এই কমান্ডটি কার্যকর করার পরে আপনি নতুন প্রকল্পের রেফারেন্সগুলি নুগেট প্যাকেজগুলি আপডেট করতে চাইতে পারেন।
ম্যানফ্রেড

বা বিদ্যমান প্রকল্পে নুগেট xunit.runner.visualstudion ইনস্টল করুন;)
লুকা

এটা কি টাইপো? আমি এটি খুঁজে পাচ্ছি না।
ম্যাট ডব্লিউ

আপনার যদি কোনও বিদ্যমান প্রকল্প থাকে তবে আপনি --forceএটির নামটি পাস করতে পারেন এটিটিকে xUnit পরীক্ষার প্রকল্প হিসাবে পুনর্নির্মাণের জন্য জোর করে। @ ম্যানফ্রেডের মন্তব্য অনুসারে, আপনাকে সেই প্রকল্পে থাকা কোনও প্রকল্পের রেফারেন্স আপডেট / পুনরায় যুক্ত করতে হবে।
মাইলস 16

4
@ ম্যাটডাব্লু হ্যাঁ, এটি টাইপের মতো দেখাচ্ছে। আমি মনে করি @Lukas বোঝানো xunit.runner.visualstudioযা তোমাদের কোন জানতে পারেন nuget.org/packages/xunit.runner.visualstudio
ম্যানফ্রেড

12

আমার ক্ষেত্রে সমস্যাটি ছিল আমার xunit এর জন্য একটি এক্সটেনশন প্রকল্প রয়েছে। এক্সটেনশানগুলি পরীক্ষা করার জন্য একটি পরীক্ষার প্রকল্পও রয়েছে। আমি যখন dotnet testআমার সমাধানে চলে এসেছি তখন আমার এক্সটেনশন প্রকল্পটিও ইউনিট পরীক্ষার প্রকল্প হিসাবে নেওয়া হয়েছিল (এটি বুঝতে আমার কিছুটা সময় লেগেছিল)। এর কারণ হ'ল এটি কিছু xunit প্যাকেজ উল্লেখ করে। এই xunit প্যাকেজগুলির <IsTestProject>true</IsTestProject>মধ্যে একটি সিএসপিআরজে ফাইলটিতে স্বয়ংক্রিয়ভাবে সম্পত্তি সেট করে । এই প্রকল্পগুলির 99.99% যেহেতু রেফারেন্স xunit আসলে ইউনিট পরীক্ষার থেকে এটি আসলে খুব ভাল। আমি পরিস্কারভাবে সেট করে এটি সমাধান করতে পারলাম

     <PropertyGroup>
...
        <IsTestProject>false</IsTestProject>
...
      </PropertyGroup>

ম্যানুয়ালি আমার সিএসপোজ ফাইলটিতে। তারপরে সমস্যাটি চলে গেল।


11

মাইক্রোসফট.নেট.টেষ্ট.এসডিকে v16.2.0 থেকে v16.4.0 এ আপডেট করার পরে আমার সাথে এটি ঘটেছিল <TargetFramework>netcoreapp2.0</TargetFramework><TargetFramework>netcoreapp3.0</TargetFramework>আমার জন্য সমস্যা সমাধানের জন্য আপডেট করা ।



8

আমি কয়েক বার এর মুখোমুখি হয়েছি এবং আমি সর্বদা ভুলে যাচ্ছি যা আছে। অতি সম্প্রতি আমার ছিল:

  • ক্লাস লাইব্রেরি -> লক্ষ্য। নেট কোর 3.0
  • পরীক্ষার প্রকল্প -> লক্ষ্য .NET কোর 3.1

আমার পরীক্ষা প্রকল্পের জন্য প্যাকেজগুলি:

  • মোক -> 4.14.1
  • xUnit -> 2.4.1
  • xUnit.Runner.VisualStudio -> 2.4.2

আমি দেখছিলাম:

সি: \ পথ \ বিন \ ডিবাগ \ নেটস্ট্যান্ডার্ড 2.0 \ testhost.dll খুঁজে পাওয়া যায়নি। আপনার পরীক্ষা প্রকল্প প্রকাশ করুন এবং আবার চেষ্টা করুন।

এবং আমার যা যা করার দরকার তা হ'ল আমার পরীক্ষার প্রকল্পে অনুপস্থিত নুগেট প্যাকেজটি যুক্ত করা হয়েছিল: "মাইক্রোসফট.নেট.টেষ্ট.এসডিকে"

এই সময়ে সবকিছু স্বাভাবিক ছিল normal


7

আপনি যদি xUnit ব্যবহার করছেন তবে নিশ্চিত হয়ে নিন যে আপনার প্রকল্পের ধরনটি নেটস্প্যান্ডার্ডের মতো নয়। XUnit যেমন নেটস্প্যান্ডার্ডকে সমর্থন করে না , তেমন এটিকে কোরঅ্যাপ ২.০ বা অন্যগুলিতে পরিবর্তন করুন।


এটি বিশেষত আমার সমস্যা ছিল। দোহ! আমার তাড়াতাড়ি ধরা উচিত ছিল। আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ কারণ এটি আমাকে সঠিক পথে ফেলেছে :)
দেব নেতা

পরীক্ষার প্রকল্পটি। নেট কোর অ্যাপ্লিকেশনকে xunit.runner.visualstudio প্যাকেজটি সঠিকভাবে ইনস্টল করার অনুমতি দেয়। দয়া করে নোট করুন যে ভিজ্যুয়ালস্টুডিওর পরিবর্তনগুলি বাছাই করার জন্য আপনাকে সম্ভবত সমাধান সমাধান করে এটি পুনরায় লোড করতে হবে।
শেল্ডন

6

আমি একটি সংস্করণ সহ একটি খুব আকর্ষণীয় সামঞ্জস্য সমস্যা পেয়েছি। আমি আমার কোড হিসাবে একটি সাধারণ অনুশীলন হিসাবে আপগ্রেড করেছি এবং আমি xUnit.runner.visualstudio 2.4.2 এ স্যুইচ করেছি। এটি নেট কোর 3.1 এর জন্য কাজ করা বন্ধ করে দিয়েছে। আমাকে ২.৪.১ এ নামিয়ে আনা হয়েছিল এবং এটি আবার কাজ শুরু করে।


4
আমার একই সমস্যা ছিল - আমার সমাধানে কয়েকটি পরীক্ষামূলক প্রকল্পের জন্য। ২.৪.২-এ আপডেট হওয়ার পরে পরীক্ষার প্রকল্পগুলি ব্যর্থ হওয়ার সাধারণ কারণটি হ'ল সেই প্রকল্পগুলি মাইক্রোসফট.নেট.টেষ্ট.এসডিকে (আগে কখনও সমস্যা ছিল না) অনুপস্থিত ছিল। ১.6..6.১ নুগেট যুক্ত হয়েছে এবং আবার কাজে ফিরে এসেছিল।
বিট 10001

ভাল, আমি এটা জানতাম না। আমি এটি কাজ করতে ডাউনগ্রেড করেছি
ম্যাক্সিমিলিয়ানো রিওস

4
আমি এটি একইভাবে স্থির করেছি XUnit.runner.visualstudio প্যাকেজটি ২.৪.১ এ ডাউনগ্রেড করা সমস্যার সমাধান হয়েছিল।
জেসেক লাবুদা

আমি নিশ্চিত করতে পারি এটি xunit.runner.visualstudio এর ২.৪.৩ সংস্করণ সহ এখনও একটি সমস্যা। 2.4.1 এ ডাউনগ্রেড সমস্যার সমাধান করে।
বিএন_আর

এর কারণে আমাকে প্রচুর প্রকল্প ডাউনগ্রেড করতে হয়েছিল। আমি দুর্ঘটনাক্রমে সবকিছু আপগ্রেড করেছি এবং এটি কাজ করা বন্ধ করে দিয়েছে
ম্যাক্সিমিলিয়ানো রিওস

5

আমি একটি নেটকোর্যাপ ২.২ পরীক্ষা প্রকল্প তৈরি করছিলাম এবং তারপরে dotnet vstestবিন ফোল্ডারটি চালানোর চেষ্টা করছিলাম । আমি লক্ষ্য করেছি যে মাইক্রোসফ্ট টেস্ট ডিএলএল থেকে:

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />

আমার বিন ফোল্ডারে আউটপুট পাচ্ছিল না। কেবল বিল্ডিংয়ের পরিবর্তে, আমি এর পরিবর্তে একটি প্রকাশনা চালিয়েছিলাম যার ফলে আউটপুট ফোল্ডারে প্রয়োজনীয় ডিএলএল অন্তর্ভুক্ত ছিল এবং আমি সেখান থেকে চালাতে সক্ষম হয়েছি dotnet vstest


3

আপনি যদি নেটস স্ট্যান্ডার্ড ২.০ লক্ষ্য করে থাকেন তবে এটি কার্যকর হবে না। .NET কোর ব্যবহার করা হয়। .csproj এ নিম্নলিখিত লাইন রয়েছে তা নিশ্চিত করুন:

<TargetFramework>netcoreapp3.0</TargetFramework>

এবং এছাড়াও প্যাকেজ রয়েছে Microsoft.NET.Test.Sdk


2

নুনিত (। নেট কোর 3.1) প্রকল্পের জন্য আমি একই সমস্যার মুখোমুখি হয়েছি। আমি মাইক্রোসফট.নেট.টেষ্ট.এসডিকে v16.6.1 ব্যবহার করছি, আমি সংস্করণটি 15.9.0 এ ডাউনগ্রেড করেছি। এবং এটি কাজ শুরু


1

এই ত্রুটির মধ্যে ছড়িয়ে পড়ে, এর মূল কারণটি ছিল পরীক্ষাগুলি একটি উইন্ডোজ পাথ (MAX_PATH) এর সর্বাধিক দৈর্ঘ্যকে হিট করে যা 260 টি অক্ষর হিসাবে সংজ্ঞায়িত।


0

আপনি যদি সলিউশনটির চেয়ে ক্লোনিং করে কোনও প্রকল্প চালাচ্ছেন তবে মাইক্রোসফট.এনইটি.টেষ্ট.এসডিকে ইনস্টল করতে হবে। কীভাবে: সরঞ্জামগুলি> নুগেট প্যাকেজ ম্যানেজার> সমাধানের জন্য নুগেট প্যাকেজগুলি পরিচালনা করুন ...> Microsoft.NET.Test.Sdk অনুসন্ধান করুন এবং আপনার পরীক্ষার প্রকল্পের জন্য ইনস্টল করুন।


0

অজান্তে একটি অ-পরীক্ষা প্রকল্প চালানোর চেষ্টা করার কারণে এটিও ঘটতে পারে, সাধারণত যখন আপনার পরীক্ষার ফাইলগুলির ফিল্টার খুব প্রশস্ত হয় তখন ঘটে।


0

ইউনিট পরীক্ষা ডিবাগ করার চেষ্টা করার সময় এই ত্রুটিটি পেয়েছি। নীচে আমার চেষ্টা করা পদক্ষেপগুলি রয়েছে।

  • পদক্ষেপ 1: মাইক্রোসফ.স্টেস্টপ্ল্যাটফর্ম. টেস্টহোস্ট ইনস্টল করেছেন এবং পরীক্ষা চালানোর চেষ্টা করেছেন তবে ভাগ্য নেই।
  • পদক্ষেপ 2: .NET কোর 2.0 থেকে 2.1 এ টার্গেটের কাঠামো পরিবর্তিত হয়েছে এবং পরীক্ষা চালানোর চেষ্টা করেছে তবে ভাগ্য নেই।
  • পদক্ষেপ 3: বন্ধ এবং ভিএস2017 খোলা হয়েছে এবং চালানোর চেষ্টা করেছে।

হ্যাঁ!!! এটি কাজ করেছে :-) শেষ ধাপটি চেষ্টা করতে কখনও মিস করবেন না ;-) আশা করি এটি আমার মতো কাউকে সহায়তা করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.