ডিপ্লোয়মেন্টআইটেম বৈশিষ্ট্য নিয়ে সমস্যা with


95

আমি বর্তমানে সি # নেট এ লেখা একটি "পুরাতন" সিস্টেম বজায় রাখছি, কিছু অপ্রচলিত বৈশিষ্ট্য সরিয়ে এবং কিছু সংশোধনকারী করছি। Godশ্বরকে ধন্যবাদ, পূর্ববর্তী লোকটি কিছু ইউনিট পরীক্ষা (এমএসটিস্টেস) লিখেছিল। আমি JUnit পরীক্ষা দিয়ে বেশ স্বাচ্ছন্দ্য বোধ করি, তবে এমএসটিস্টের সাথে এখনও বেশি কিছু করি নি।

পরীক্ষার পদ্ধতিগুলির একটি DeploymentItemবৈশিষ্ট্য রয়েছে, একটি পাঠ্য ফাইল নির্দিষ্ট করে যা ব্যবসায়িক যুক্তি পদ্ধতিতে যা পরীক্ষা করা হয় এবং এটি একটি ২ য় স্থানে রয়েছে DeploymentItemযেখানে কেবল একটি পাথ নির্দিষ্ট করা হয়েছিল যাতে টিআইএফ ফাইলগুলির একটি গুচ্ছ রয়েছে যা খুব মোতায়েনও করতে হয়।

[TestMethod()]
[DeploymentItem(@"files\valid\valid_entries.txt")]
[DeploymentItem(@"files\tif\")]
public void ExistsTifTest()
{
   ...
}

পরীক্ষাগুলি আগে কাজ করেছিল, তবে এখন আমাকে \ ফাইল \ টিআইএফ ডিরেক্টরিতে থাকা টিআইএফ ফাইলগুলির নাম পরিবর্তন করতে হবে। একটি নিয়ম অনুসারে, টিআইএফ ফাইলের নামগুলি একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে যা যা ExistsTifTest()পদ্ধতি দ্বারাও চেক করা হয় । এখন নতুন ফাইলগুলি নতুন প্রয়োজনীয়তার সাথে খাপ খাইয়ে নেওয়ার জন্য আমাকে নাম পরিবর্তন করতে হয়েছিল এবং সম্ভবত টিআইএফ ফাইলগুলি আর আগের মতো মোতায়েন করা হচ্ছে না।

কেউ আমাকে ইঙ্গিত দিতে পারে কেন এটি ঘটে বা এর কারণ কী হতে পারে? আমি যদি পরীক্ষার পদ্ধতিতে ডিপ্লোয়মেন্টআইটেম বৈশিষ্ট্য অনুসারে \ ফাইলগুলি \ বৈধ \ ডিরেক্টরিতে "বৈধ_তন্ত্র.টেক্সট" এর পাশে একটি নতুন পাঠ্য-ফাইল "my2ndTest.txt" বলি তখন একই জিনিস ঘটে। ফাইল মোতায়েন হয় না?

আমি এখন সরাসরি টেস্টারঙ্কনফাইগে মোতায়েনের পথটি নির্ধারণ করে চিত্রগুলি মোতায়েন করেছি, তবে আমি বুঝতে চাই যে এই জিনিসগুলি কেন ঘটে বা উদাহরণস্বরূপ আমার নতুন ফাইল "my2ndTest.txt" কেন অন্যরা না করে স্থাপন করা হয় না।


4
এখানে একটি বৃহত গোচা বুঝতে হবে যে ডিপোরিয়ালমেন্ট আইটেমঅ্যাট্রিবিউটে উল্লিখিত সমস্ত আইটেমই সেই জায়গাটিতে অনুলিপি করা হবে যেখানে আপনার পরীক্ষা সমাবেশগুলি চলেছে। অন্য কথায়, আপনি যদি আশা করছিলেন যে এটি আপনার ডিরেক্টরি কাঠামোটি সংরক্ষণ করবে আপনি ভাগ্যের বাইরে চলে যাবেন। আপনার যদি এটি কোনও নির্দিষ্ট ডিরেক্টরিতে অনুলিপি করা প্রয়োজন, তবে দুটি পরামিতি ডিপোরিয়ালটাইম (উত্স, আউটপুটডির) সংস্করণ ব্যবহার করুন। এফওয়াইআই - আপনি নিজের পরীক্ষার যে কোনও একটিতে একটি সিস্টেম.কনসোল.ব্রাইটলাইন (System.En वातावरण.Cਵਰেন্ট ডিরেক্টরি) ফেলে রেখে এমএসটেষ্টের জন্য ফাইলগুলি কোথায় চালিত হয় তা জানতে আপনি পুরাতন স্কুলে যেতে পারেন। এনক্রাঞ্চের এই সমস্যা ছিল না!
কোডমনিকিিং

উত্তর:


112

DeploymentItem কিছুটা গণ্ডগোল

আপনার সমাধানের প্রতিটি ফাইলের ভিএস.এনইটি-তে একটি "অনুলিপি আউটপুট ফোল্ডার" সেটিংস থাকবে। আউটপুট ফোল্ডারে ফাইল আনার জন্য আপনার এটিকে "সর্বদা অনুলিপি করুন" (বা অনুরূপ) হওয়া দরকার।

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

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

দ্রষ্টব্য: এই মন্তব্যগুলি VS2010 এর সাথে আমার অভিজ্ঞতার ভিত্তিতে। আমার উত্তরের মন্তব্যগুলি পরামর্শ দেয় যে এটি ভিএস ২০১২ এর সাথে সমস্যা নয়। আমি এখনও এই মন্তব্যে দাঁড়িয়ে আছি যে এম্বেড থাকা সংস্থানগুলি ব্যবহার করাতে "জাদু" কম জড়িত এবং আমার জন্য, আমার ইউনিটের পরীক্ষার "ব্যবস্থা" পর্যায়ে আরও স্পষ্ট করে তোলে।


4
আউটপুট ডিরেক্টরিতে অনুলিপি কখনই এমএসটিস্টে ফাইল মোতায়েন করে তা প্রভাবিত করে না। এই উত্তরটি ভুল।
kzu

20
ভিএস 2010 প্রিমিয়ামে, এই পরিবর্তনটি (এবং অন্য কোনও পরিবর্তন নয়) করার ফলে ফাইলটি মোতায়েনের কারণ ঘটেছে। সুতরাং, আমি প্রকৃত প্রমাণের ভিত্তিতে এই সিদ্ধান্ত নিয়েছি যে এটি Msestest স্থাপনাকে প্রভাবিত করে।
জোনস্টোনেক্যাশ

4
রাজি। আমি এই একক পরিবর্তন ঘুরিয়ে দেখেছি ডিপোরিয়ামআইটিমে নীচে down
মার্টিন পেক

4
এটি VS2012 এ আর প্রয়োজন হবে না বলে মনে হয়। আমার স্থাপনার আইটেমগুলি "অনুলিপি করুন আউটপুট ফোল্ডার" দিয়ে "অনুলিপি করুন না" সেট করে স্থাপন করা হচ্ছে।
মাইক 21

32
এটি দুর্দান্ত আপনি কীভাবে ডিপ্লোমেন্টআইটিম আপনাকে কোনও নোটিশ দেয় না যখন এটি আপনার সরবরাহ করা একক ফাইল অনুলিপি করতে অক্ষম।

75

ভিএস 2010-এ, আমার স্থানীয়.স্টেস্টেটিংগুলিতে "ডিপ্লয়মেন্ট সক্ষম করুন" চেক করা হয়নি এবং ডিপ্লোয়মেন্টআইটেম বৈশিষ্ট্যটি কাজ করছে না। আমি এটি পরীক্ষা করেছিলাম এবং সবকিছু ঠিকঠাক কাজ করেছে। আশা করি এটা কাজে লাগবে!


4
যুগে যুগে আমি এটির কাজ চালানোর চেষ্টা করে একটি ইটের দেয়ালের বিরুদ্ধে মাথা ঘুরাচ্ছি than থ্যাঙ্কিও!
মাদুর-ম্যাক্লোকলিন

12
আমি মনে করি যদি ফ্রেমওয়ার্কটি একটি সতর্কতা জারি করে যে এই সেটিংটি বন্ধ করা হয় তবে ডিপোরিয়াম আইটেম বৈশিষ্ট্যগুলি উপেক্ষা করা হচ্ছে। আমি আমার ডেস্কে একটি সুন্দর অবতল ছাপ রেখেছি।
অ্যালান ম্যাকবি - এমএসএফটি

4
দ্রষ্টব্য যে স্থানীয়.স্টেটসেটিংগুলি সমাধান আইটেমগুলিতে রয়েছে
ম্যাথু লক

আমি স্থানীয় আইটেমসেটেটিংগুলিতে যে আইটেমগুলি স্থাপন করতে চেয়েছিলাম সেগুলি সহ আমিও ডিরেক্টরি যুক্ত করতে পেরেছিলাম: i.imgur.com/p1z3m9R.png
ম্যাথু লক

2018 এ ভিএস2017 ব্যবহার করে 'ডিপ্লয়মেন্ট সক্ষম করুন' চেক করা এখনও এই সমস্যার সমাধান। এবং দুঃখের বিষয় এখনও এখনও ভিজ্যুয়াল স্টুডিও থেকে যাই হোক না কেন সতর্কতা। সুতরাং এই সমাধানের জন্য ধন্যবাদ।
ডন এইচ

19

আমিও একই ধরণের সমস্যার মুখোমুখি হয়েছি তবে এর জন্য আমি সহজ 3 ধাপের সমাধান খুঁজে পেয়েছি:

আপনার ফোল্ডারের কাঠামোটি দেখে মনে হচ্ছে: SolutionFolder\ TestProjectFolder\ SubFolder\

  1. "সলিউশন আইটেম / লোকাল.স্টেটসেটেটিংস"> "স্থাপনা"> "ডিপ্লোয়মেন্ট সক্ষম করুন" পরীক্ষা করুন
  2. আপনি যদি ভিএস2010 ব্যবহার করছেন তবে নিশ্চিত করুন যে আপনি যে ফাইলগুলি স্থাপন করতে চান তাদের "অনুলিপি ফোল্ডারে অনুলিপি" সম্পত্তি "সর্বদা অনুলিপি করুন" বা "নতুন হলে অনুলিপি করুন" এ সেট করা আছে তা নিশ্চিত করুন make
  3. যেকোন একটির সাথে আপনার টেস্টমেথোডকে অ্যাট্রিবিউট করুন:
    • [DeploymentItem(@"TestProjectFolder\SubFolder")]<SubFolder>টেস্ট রান ডিরেক্টরিতে সমস্ত বিষয়বস্তু স্থাপন করা
    • [DeploymentItem(@"TestProjectFolder\SubFolder", "TargetFolder")]টেস্ট রান ডিরেক্টরিতে সমস্ত বিষয়বস্তু মোতায়েন <SubFolder>করতে<TargetFolder>

এমএসটিস্ট সম্পর্কে একটি চূড়ান্ত নোট (কমপক্ষে ভিএস 2010 এর জন্য):

আপনি যদি চান <TargetFolder>হিসাবে একই নাম আছে <SubFolder>ব্যবহার করে, [DeploymentItem(@"SubFolder", @"SubFolder")]নিঃশব্দে ব্যর্থ হবে যেমন MSTest রানার একটি নিরীহ প্রান্ত ক্ষেত্রে হিট। এই জন্যই আপনি পূর্বে ভী উচিত <SubFolder>সঙ্গে <TestProjectFolder>তাই হিসাবে:[DeploymentItem(@"TestProjectFolder\SubFolder", @"SubFolder")]


সাবফোল্ডার নামকরণ ব্যর্থতা সম্পর্কে নোট একটি রত্ন।
আরজে লোহান

4
ভিএস 2015 কিছুটা আলাদা বলে মনে হচ্ছে। আমার ডিপোরিয়ামআইটিটি অ্যাট্রিবিউটের "টেস্টপোজেক্টফোল্ডার" অংশটি সরানো দরকার needed
uli78

15

আশা করি অন্য কাউকে সাহায্য করার জন্য: আমি এখানে সমস্ত পরামর্শ চেষ্টা করেছিলাম এবং এখনও আমার স্থাপনার আইটেমটি অনুলিপি করা হয়নি।

আমার যা করতে হয়েছিল ( এখানে প্রস্তাবিত হিসাবে ) তা ছিল ডিপ্লোয়মেন্টআইটেম বৈশিষ্ট্যে একটি দ্বিতীয় প্যারামিটার যুক্ত করা:

[DeploymentItem(@"UnitTestData\TestData.xml", "UnitTestData")]

10

আপনি যদি আপনার .testrunconfig ফাইলে যান এবং ডিপ্লোয়মেন্টটি "ডিপ্লোপমেন্ট সক্ষম করুন" এর চেকের অধীনে যান, পরীক্ষাগুলি তাদের স্বাভাবিক স্থানে চলবে এবং ইউনিট পরীক্ষার বাইরে অ্যাপ্লিকেশন চালানোর সময় সমস্ত কিছুই এর মতো কাজ করবে।


এটির সাথেও কিছু সমস্যা ছিল। প্রধানমন্ত্রী হিসাবে আমার কাছে দেব দ্বারা ব্যবহৃত সমস্ত সরঞ্জামের অ্যাক্সেস নেই। এমএসটিস্ট এটি করতে ব্যর্থ হওয়ার সাথে সাথে রিশার্পার এই ক্ষেত্রে ফাইলটি সঠিকভাবে অনুলিপি করেছিলেন। -> দেব ঠিক থাকাকালীন আমি ত্রুটিগুলি অনুভব করেছি। 'টেস্ট-> টেস্ট সেটিংস সম্পাদনা করুন -> স্থানীয় সেটিংস -> স্থাপনা "এ পরিবর্তন করে প্রশ্নযুক্ত ফাইলটি এটি আমার এমএসটিস্ট ব্যবহারের জন্য ঠিক করেছে।
Sonstabo

9

এটি সম্ভবত আপনার সঠিক সমস্যার সাথে সম্পর্কিত নয়, তবে [ডিপ্লোয়মেন্টআইটেম] বৈশিষ্ট্যের সাথে আমি বেশ কয়েকটি টিপস পেয়েছি।

  1. আউটপুট ডিরেক্টরিতে অনুলিপি সর্বদা অনুলিপি সেট করা উচিত।

[TestInitialize] বৈশিষ্ট্যটি ব্যবহার করার সময় এটি কার্যকর হয় না

[TestInitialize]
[DeploymentItem("test.xlsx")]
public void Setup()
{

এটি আপনার [টেস্টমেথোদ] এ থাকা উচিত, যেমন

    [TestInitialize]
    public void Setup()
    {
        string spreadsheet = Path.GetFullPath("test.xlsx");
        Assert.IsTrue(File.Exists(spreadsheet));
        ...
    }

    [TestMethod]
    [DeploymentItem("test.xlsx")]
    public void ExcelQuestionParser_Reads_XmlElements()
    {
        ...
    }

4
এটি একটি অত্যন্ত বিরক্তিকর সীমাবদ্ধতা। আমি অনেক ক্ষেত্রে মনে করি, মোতায়েন করার সময়টি আরম্ভের সময় হওয়া উচিত। যদি আমার সমস্ত পরীক্ষাগুলি একই সমর্থনকারী শিল্পকর্ম ব্যবহার করে? আমার ধারণা আমার কয়েক ডজন পরীক্ষার পদ্ধতিতে সজ্জাগুলি অনুলিপি করে আটকানো হবে? হাস্যকর।
রায়য়ান

5

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


4

এটি সঠিকভাবে প্রশ্নের উত্তর দেয় কিনা তা নিশ্চিত নয় তবে এটি কারওর পক্ষে সহায়তা করতে পারে। প্রথমে, আমি খুঁজে পেয়েছি "ডিপ্লয়মেন্ট সক্ষম করুন" বাক্সে কাজের জন্য নিয়োগের জন্য অবশ্যই চেক করা উচিত। দ্বিতীয়ত, ডকটি বলেছে যে উত্সের পথটি "প্রকল্পের পথে তুলনামূলক" যা প্রথমে আমি প্রকল্প ফোল্ডারটি বোঝাতে চেয়েছিলাম। বাস্তবে, এটি বিল্ড আউটপুট ফোল্ডারটিকে বোঝায়। সুতরাং যদি আমার কাছে 'টেস্টফায়ালস' নামে একটি প্রকল্প ফোল্ডার থাকে এবং এতে কোনও ফাইল বলা হয় Testdata.xml, এইভাবে বৈশিষ্ট্যটি ব্যবহার করে এটি কাজ করে না:

[DeploymentItem(@"TestFiles\Testdata.xml")] 

আমি Testdata.xmlফাইলটি চিহ্নিত করতে পারি Copy Always, যাতে বিল্ড আউটপুট ফোল্ডারের নীচে একটি অনুলিপি রাখে (যেমন, Debug\TestFiles\TestData.xml)। স্থাপনার প্রক্রিয়াটি তারপরে TestFiles\Testdata.xmlবিল্ড আউটপুট সম্পর্কিত relative পথে ( ) অবস্থিত ফাইলটির অনুলিপিটি খুঁজে পাবে । বা, আমি এইভাবে বৈশিষ্ট্যটি সেট করতে পারি:

[DeploymentItem(@"..\\..\TestFiles\Testdata.xml")] 

এবং স্থাপনার প্রক্রিয়াটি আসল ফাইলটি সন্ধান করবে। সুতরাং হয় কাজ করে, তবে আমি লক্ষ্য করেছি যে Copy Alwaysআমি কখনও কখনও একই প্রকল্পে অ্যাপ.config ফাইল সম্পাদনা করার সময় আমার একই সমস্যার মধ্যে চলে আসি - যদি আমি কোড পরিবর্তন না করি বা পুনর্নির্মাণকে জোর না করি তবে কিছুই চিহ্নিত করা ফাইলের অনুলিপি তৈরি করতে ট্রিগার করে না বিল্ড অনুলিপি করা।


আপেক্ষিক পথটি আমার জন্য সমস্যা ছিল এবং এটি এটি স্থির করে। পরীক্ষাগুলি কীভাবে চালানো হয়েছিল তার উপর নির্ভর করে আমি 2 সেট ডিপ্লোয়মেন্টআইটেম স্টেটমেন্ট যুক্ত করেছি।
এড বায়িয়েটস

3

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


2

উপরের সমস্ত পরামর্শ চেষ্টা করে - মোতায়েন করার জন্য ফাইলগুলি পেতে চেষ্টা করার সময় আমার অনেক সমস্যা হয়েছিল।

তারপরে আমি ভিএস 2010 বন্ধ করে দিয়েছি; এটি পুনরায় চালু করুন, সমাধানটি লোড করুন এবং সমস্ত কিছু কাজ করেছে। (!)

আমি কিছু চেকিং করেছি; স্থানীয় 'ডিপ্লোয়মেন্ট সক্ষম করুন' পতাকা সেট করার পরে টেস্টসেটিংয়ের মাধ্যমে টেস্ট ফলাফল উইন্ডো থেকে কেবল পরীক্ষাটি পুনরায় চালানো উচিত নয়। আপনাকে আগের পরীক্ষার রানটি ইউআই থেকে সরিয়ে নিতে হবে যেমন একটি ভিন্ন পরীক্ষা চালিয়ে, বা আপনার সমাধানটি পুনরায় খোলার মাধ্যমে।


2

ব্যবহার করবেন না DeploymentItem

এটি সঠিকভাবে সেট আপ করা খুব কঠিন এবং এটি আমার রিশার্পার পরীক্ষার রানার বা ভিসুয়াল স্টুডিও 2017 সালে এমএসটিস্টির জন্য নেটিভের সাথে কাজ করছে না।

পরিবর্তে, আপনার ডেটা ফাইলটিতে ডান ক্লিক করুন, এবং বৈশিষ্ট্য নির্বাচন করুন । আউটপুট ডিরেক্টরিতে অনুলিপি নির্বাচন করুন : সর্বদা

এখন আপনার পরীক্ষায়, এটি করুন। ডিরেক্টরিটি কেবল পরীক্ষার প্রকল্পের সাথে সম্পর্কিত ফাইলের ডিরেক্টরি। সহজ।

    [TestMethod()]
    public void ParseProductsTest()
    {
        // Arrange
        var file = @"Features\Products\Files\Workbook_2017.xlsx";
        var fileStream = File.Open(file, FileMode.Open);
        // etc.
    }

এটি স্বয়ংক্রিয় বিল্ড এবং পরীক্ষার সিস্টেমগুলির সাথে ভাল কাজ করে বলে মনে হচ্ছে।


1

যেহেতু আমি সর্বদা ডিপোরিআইটিআইটিটি কোনও বিশৃঙ্খলা খুঁজে পেয়েছি, তাই পোস্ট-বিল্ড স্ক্রিপ্টটি ব্যবহার করে এই জাতীয় ফাইলগুলি স্থাপন করা করি। - নিশ্চিত করুন যে আপনি যে ফাইলগুলি অনুলিপি করতে চান তাতে সর্বদা অনুলিপি সম্পত্তি সেট থাকে। - বিল্ড টার্গেট ফোল্ডার (বিন \ ডিবাগ) থেকে আপনার পরীক্ষাটি যে জায়গাগুলি প্রত্যাশা করছে সেই স্থানে ফাইলগুলি অনুলিপি করতে আপনার পরীক্ষার প্রকল্পের পরে তৈরি স্ক্রিপ্টটি সংশোধন করুন।


1

ভিএস2010 এর জন্য এটি ব্যবহার করে দেখুন। তাই আপনি যদি DeployItems যোগ করার জন্য প্রত্যেক TIF জন্য প্রয়োজন হবে না
সরান

[DeploymentItem(@"files\valid\valid_entries.txt")]  
[DeploymentItem(@"files\tif\")]  

একটি পরীক্ষা কনফিগারেশন যুক্ত করুন।
- সমাধান এক্সপ্লোরার-এ সমাধান নোডে ডান-ক্লিক করুন
- যুক্ত করুন -> নতুন আইটেম ...
- বামদিকে টেস্ট সেটিংস নোডটি নির্বাচন করুন, ডানদিকে আইটেমটি নির্বাচন করুন
- যুক্ত ক্লিক করুন

এটিকে কল করুন TDD

> এর TDDঅধীনে চয়ন TestMenuকরুন Edit Testsettings

ডিপ্লয়মেন্টে ক্লিক করুন। এটি সক্ষম করুন এবং তারপরে আপনি যে ফাইল এবং ডিরেক্টরিগুলি চান তা যুক্ত করুন here সমাধানের সাথে সম্পর্কিত একটি পথ থাকবে। ফাইলগুলি লাগানো হবে। মূল ফাইলটি এখানে উদাহরণস্বরূপ:

D:\Users\Patrik\Documents\Visual Studio 2010\Projects\DCArrDate\WebMVCDCArrDate\Trunk\WebMVCDCArrDate\Authority.xml  

আমি যখন আমার ইউনিট পরীক্ষা চালাই তখন এটি অনুলিপি হয়ে যায়

D:\Users\Patrik\Documents\Visual Studio 2010\Projects\DCArrDate\WebMVCDCArrDate\Trunk\WebMVCDCArrDate.Tests\bin\Debug\TestResults\Patrik_HERKULES 2011-12-17 18_03_27\Authority.xml  

টেস্টকোডে আমি এটিকে কল করি:

[TestMethod()]
public void Read_AuthorityFiles_And_ParseXML_To_Make_Dictonary()  
{  
  string authorityFile = "Authority.xml";  
  var Xmldoc = XDocument.Load(authorityFile);  

সর্বদা অনুলিপি নির্বাচন করার প্রয়োজন নেই; ফাইলগুলি পরীক্ষার প্রকল্পে রাখুন; টেস্টকোডে হার্ডকোডযুক্ত পাথগুলি যুক্ত করুন। আমার জন্য এই সমাধানটি সবচেয়ে ভাল কাজ করেছে। আমি ডিপ্লোনিআইটেম দিয়ে চেষ্টা করেছি, সর্বদা অনুলিপি করি তবে এটি আমার পছন্দ নয়।


1

যারা ডিপ্লোনিআইটিমের ঝামেলা এড়াতে পছন্দ করেন এবং @ মার্টিন পেকের প্রস্তাবিত পদ্ধতি গ্রহণ করেছেন (স্বীকৃত উত্তর), আপনি এম্বেডড রিসোর্সের বিষয়বস্তু অ্যাক্সেস করতে নীচের কোডটি ব্যবহার করতে পারেন:

public string GetEmbeddedResource(string fullyQulifiedResourceName)
{
    var assembly = Assembly.GetExecutingAssembly();
    // NOTE resourceName is of the format "Namespace.Class.File.extension";

    using (Stream stream = assembly.GetManifestResourceStream(fullyQulifiedResourceName))
    using (StreamReader reader = new StreamReader(stream))
    {
        string result = reader.ReadToEnd();
    }
}

বিশদ জন্য, এই এসও থ্রেড দেখুন


4
আমার বিল্ডিং সার্ভারে চলাকালীন অ্যাসেম্বলি.গেটএক্সেকিউটিংঅ্যাস্পাবশন () নিয়ে সমস্যা হয়েছে -> এটি আসল পরীক্ষা সমাবেশের পরিবর্তে পরীক্ষার রানারকে ফিরিয়ে দেবে। অ্যাসেম্বলিটি টেস্টাসেবলের (যেমন আপনার টেস্টক্লাস) কোনও নির্দিষ্ট ধরণের প্রতিফলন করে এটি আমার জন্য সমাধান করেছে।
আরনো পিটার্স

1

আমার জন্য, মূল কারণটি ছিল পুরোপুরি অন্য কিছু: আমার পরীক্ষাগুলি দ্বারা উত্পাদিত কোডটি নতুন নামকরণ এবং / অথবা মোতায়েন করা .xML পরীক্ষার ফাইলটি মুছে ফেলা হয়েছিল।

অতএব, আমি যখন পৃথকভাবে আমার পরীক্ষা চালাতাম, তখন তারা পাস করত, তবে সবগুলি একসাথে চালানোর সময় ২ য় এবং পরবর্তী পরীক্ষায় "ফাইল পাওয়া যায়নি" ত্রুটিগুলি (যা মূলত DeploymentItemবৈশিষ্ট্যটি কাজ না করায় ভুলভাবে ডায়াগনোজিন করেছি ) দিয়ে ব্যর্থ হত ।

আমার সমাধানটি ছিল প্রতিটি পৃথক পরীক্ষার পদ্ধতিতে মোতায়েন করা ফাইলটির একটি অনুলিপি তৈরি করা ( এই কৌশলটি ব্যবহার করে ), এবং তারপরে প্রোডাকশন কোডটি পরীক্ষা করা হচ্ছে মূলটির পরিবর্তে অনুলিপি করা ফাইলটি ব্যবহার করুন।


1

স্থানীয় ইউনিটেটেস্ট রান এবং টিমসিটি ইউনিটেস্ট পুনরায় পুনরায় সমাধানের জন্য আমরা ডিপ্লোমেন্ট আইটেমগুলির সমস্যার দ্বারা অনেক সময় ব্যয় করেছি। এটা সহজ নয়.

এই ইস্যুটি ডিবাগ করার জন্য খুব ভাল সরঞ্জামটি হ'ল প্রক্রিয়া-এক্সপ্লোরার । প্রক্রিয়া এক্সপ্লোরার ব্যবহার করে, আপনি ভিজ্যুয়াল স্টুডিওগুলি স্থাপনার আইটেমগুলি কোথায় সন্ধান করছে তা পরীক্ষা করতে পারেন এবং প্রকল্পটিতে সংশোধন করতে পারেন। কেবলমাত্র সমস্ত ফাইল অপারেশন ফিল্টার করুন যেখানে পাথটিতে আপনার স্থাপনার ফাইল নাম রয়েছে এবং আপনি এটি দেখতে পাবেন।


আমি জানি এটি একটি খুব পুরানো উত্তর, তবে আপনি কীভাবে প্রক্রিয়া এক্সপ্লোরার ব্যবহার করেন তা বিশদভাবে জানাতে পারলে এটি সহায়ক হবে that আমি ফাইল অপারেশনগুলি কীভাবে দেখতে হবে তা দেখছি না, এগুলি খুব কম ফিল্টার করে ...
ডেভিড

1

ডিপ্লোয়মেন্ট অ্যাট্রিবিউটটি যাচাই করা দরকার, আমি ডিপোরিয়মেন্ট আইটেম অ্যাট্রিবিউট সম্পর্কে অন্য কিছু আবিষ্কার করেছি।

[TestMethod()]
[DeploymentItem("folder\subfolder\deploymentFile.txt")]
public void TestMethod1()
{
   ...
}

আপনার ডিপ্লোয়মেন্টফিল.টিএসটিটি সমাধান ফাইলের সাথে সম্পর্কিত হতে হবে এবং টেস্টফিল.সিগুলি নয়।

এখানে চিত্র বর্ণনা লিখুন


পরিশেষে আমার ডিপোরিয়মেন্টআইটেম উত্সটি পরীক্ষার প্রকল্পের সাথে সম্পর্কিত হয়ে আমি এই কাজটি পেয়েছি। সুতরাং আমার সমাধানে আমার একটি প্রকল্প রয়েছে "পরিষেবা. টেস্টস"। সেখানে আমার একটি ফোল্ডার "ফাইলফোর্ড টেস্টস" আছে যা আমার অনুলিপি করতে চাইলে ফাইলগুলি রয়েছে। আমি ব্যবহৃত [DeploymentItem(@"FilesForTests\MyFile.txt", "FilesForTests")]। আমার মনে হয় আমরা কি একই কথা বলছি?
ডেভিড

1

আমি ভিএস ২০১৩ এ এটি নিয়ে কাজ করছি। এই কাজটি করার জন্য আমার অনুসন্ধানগুলি:

  • আউটপুট ডিরেক্টরিতে অনুলিপি সেট করতে হবে যদি নতুন / সর্বদা অনুলিপি হয় তবে অনুলিপি করা হয়: MANDATORY।
  • টেস্টসেটেটিংগুলিতে "ডিপ্লয়মেন্ট সক্ষম করুন" প্রয়োজনীয় নয়। আমি কোনও। টেস্টসেটিং ফাইল ছাড়াই এই কাজটি পেয়েছি।
  • কোনও ফোল্ডারকে ২ য় পরামিতি হিসাবে উল্লেখ করা হচ্ছে: বিকল্প আউটপুট ফোল্ডার বিন্যাসকে আকার দেয়, ছাড়াই সূক্ষ্মভাবে কাজ করে।
  • ফাইলের নামের জায়গাগুলি: এটি আমার মাথা ব্যাথার কারণ হয়েছিল - ফাইলটি কখনও অনুলিপি করা হয়নি। স্পেসগুলি অপসারণ এটি স্থির করে। পালানোর চরিত্রগুলিতে এখনও নজর দেওয়া হয়নি।

একটি টিপ আমি খুব শক্তভাবে শিখেছি: প্রতিটি স্বতন্ত্র পরীক্ষায় এই বৈশিষ্ট্যটি যুক্ত করতে ভুলবেন না। টেস্টারুনে প্রথম বৈশিষ্ট্যযুক্ত পরীক্ষায় ফাইলের অনুলিপিগুলি পরীক্ষার ক্রম পরিবর্তিত হয় এবং অ-গুণযুক্ত পরীক্ষাগুলি প্রথমে ফাইলটি সন্ধান করার চেষ্টা করে নিখোঁজ থাকে।


আপনার উত্তরটি পাওয়ার আগে এখানে সবকিছু চেষ্টা করেছিলাম যা ছিল সর্বশেষতম। অপরাধী: স্পেস ইন দ্য ফাইলে! ভাল কলআউট।
জোয়েলমদেব

4
ভিজ্যুয়াল স্টুডিও 2019 ব্যবহার করে "" আরও নতুন করে অনুলিপি করুন "এটি ঠিক করে দিয়েছে। আমি "সর্বদা অনুলিপি" ঘৃণা করি কারণ এটি প্রকল্পটিকে ডিবাগ বা ইনক্রিমেন্টাল বিল্ডের মতো অনেক পরিস্থিতিতে পুনর্গঠন করতে বাধ্য করে।
জেরার্ডো গ্রিগনিওলি

রাজি। আমি কপিটি আরও নতুন করে অন্তর্ভুক্ত করতে আমার উত্তর আপডেট করেছি।
আরনো পিটারস

0

আমার বড় "গোটচা" হ'ল ডিপোরিয়ামআইটিম ডিরেক্টরিগুলি পরিচালনা করে। আমি মোতায়েন করতে চাই এমন সাব-ডাইরেক্টরিগুলি সম্বলিত ডিরেক্টরি পথ হিসাবে দু'টি পরামিতি সংস্করণটি ব্যবহার করছিলাম। আমি প্রাথমিকভাবে বুঝতে পারি নি যে এটি কেবল ডিরেক্টরিটির মূলের স্টাফ অনুলিপি করে এবং পুরো পুনরাবৃত্ত ফোল্ডার কাঠামো নয়!

আমার কাছে মূলত [ডিপ্লোয়মেন্টআইটেম (@ "ফু \", @ "ফু \")] ছিল এবং এটি আমার ফু oo বার স্থাপন করার প্রত্যাশা করছিল। আমাকে বিশেষত এটিকে [ডিপ্লোয়মেন্টআইটেম (@ "ফু \ বার \", @ "ফু \ বার \") তে পরিবর্তন করতে হয়েছিল] এবং এখন এটি একটি কবজির মতো কাজ করে।


0

আমিও একই ধরণের সমস্যার মুখোমুখি হয়েছি। আমার উপরে উল্লিখিত সমস্ত পদক্ষেপ রয়েছে তবে এখনও ভাগ্য নেই। আমি ভিএস 2010 ব্যবহার করছি। তারপরে আমি দেখতে পেয়েছি $ মেনু> পরীক্ষা> অ্যাক্টিভ টেস্ট সেটিং নির্বাচন করুন> ট্রেস এবং পরীক্ষার প্রভাব নির্বাচন করা হয়েছিল। আমি স্থানীয়তে ট্রেস এবং পরীক্ষার প্রভাব পরিবর্তন করার পরে এটি কাজ শুরু করে । এই পৃষ্ঠায় পরীক্ষার ফলাফলের ফোল্ডারে ফাইলগুলি অনুলিপি করার বিষয়ে খুব সম্পদশালী তথ্য রয়েছে, আমি এই অভিজ্ঞতাটিও যুক্ত করতে চাই।

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