ইউনিট টেস্টগুলির সাথে কাজ করতে কীভাবে আমি "আউটপুট ডিরেক্টরিতে অনুলিপি" পেতে পারি?


123

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

টেস্টআরসাল্টস ফোল্ডারে অনুলিপি করার জন্য আমি এমন একটি ফাইল কীভাবে পেতে পারি যা ডিবাগ / বিন ডিরেক্টরিতে অনুলিপি করা হয়?

উত্তর:


121

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


15
ভিএস 2010 এ এটি: টেস্ট / সম্পাদনা টেস্ট সেটিংস / স্থানীয় সম্পাদনা করুন, তারপরে তালিকায় "স্থাপনা" নির্বাচন করুন, "সক্ষম করুন ..." বাক্সটি চেক করুন এবং ফাইল (গুলি) যুক্ত করুন।
মার্সেল

18
এই পরিবর্তনটি যথাযথভাবে কার্যকর হওয়ার আগে আপনাকে নিজের সমাধানটি (বা এমনকি ভিজ্যুয়াল স্টুডিও) বন্ধ করতে হবে এবং পুনরায় খুলতে হবে
রবিভি

রবভি, আপনি আমার দিনটি তৈরি করেছেন। ধন্যবাদ!
ইগনাসিও সোলার গার্সিয়া

2
আপনি যদি কোডটিতে [ডিপ্লোয়মেন্টআইটেম] বৈশিষ্ট্যটি ব্যবহার করেন তবে আপনার ডায়ালগটিতে ফাইলগুলি নির্দিষ্ট করার দরকার নেই - নীচে @ টমফ্যানিংয়ের কোডটি দেখুন।
প্যাট্রিক জাজালাপস্কি

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

61

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

[TestMethod]
[DeploymentItem("mytestdata.xml")]
public void UploadTest()
{



}

3
আপনার এখনও এটি সক্ষম করতে হবে। যেমনটি মার্সেল তার মন্তব্যে লিখেছেন, ভিএস 2010 এ এটি: টেস্ট / সম্পাদনা টেস্ট সেটিংস / স্থানীয়, তারপরে তালিকায় "ডিপ্লোয়মেন্ট" নির্বাচন করুন, "সক্ষম করুন ..." বক্সটি চেক করুন।
প্যাট্রিক জাজালাপস্কি

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

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

1
আমি দেখতে পেয়েছি যে পরীক্ষার শ্রেণি স্তরে (পদ্ধতি স্তরের পরিবর্তে) নির্দিষ্ট করা হলে ডিপ্লোয়মেন্টআইটিম বৈশিষ্ট্যটিও কাজ করে ।
জন স্নাইডার

10

কাজের বৈশিষ্ট্যের Test -> Edit Test Settings -> Local -> Deploymentজন্য আমাকে "ডিপ্লোয়মেন্ট সক্ষম করুন" চালু করতে হয়েছিল [DeploymentItem]


এটি সত্য ... আমি কেবল এটি সক্ষম করেছি এবং এখন বৈশিষ্ট্যটি কাজ করে। ধন্যবাদ!
মিগুয়েল অ্যাঞ্জেলো

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

5

তিনটি উত্তরই আপনার প্রয়োজনের উপর নির্ভর করে সঠিক।

.Testrunconfig এ স্থাপন করতে ফাইল যুক্ত করা হচ্ছে Add (VS2010 তে .স্টেটসেটিংস) বিচ্ছিন্নতার সাথে চলমান সম্পর্কযুক্ত পরীক্ষাগুলির জন্যও এই সমস্ত ফাইল প্রতিটি পরীক্ষার আউটপুট ফোল্ডারে অনুলিপি করবে। যদি আপনি একটি পরীক্ষা চালায় তবে .testssettings এর স্থাপনার বিভাগে তালিকাভুক্ত সমস্ত পরীক্ষার ডেটা ফাইলগুলি পরীক্ষার আউটপুট ফোল্ডারে অনুলিপি করা হবে।

আমার পরীক্ষাগুলিতে আমাকে পরীক্ষার আউটপুট ফোল্ডারে আসল পরীক্ষার আউটপুট এক্সএমএল এর সাথে তুলনা করার জন্য একটি প্রত্যাশিত এক্সএমএল ফাইলটি অনুলিপি করতে হবে। আমি চালানো হওয়া পরীক্ষা (গুলি) সম্পর্কিত XML ফাইলটি অনুলিপি করতে ডিপ্লোয়মেন্টআইটিম বৈশিষ্ট্যটি ব্যবহার করি use ভিএস 2010-এ আমাকে .টেস্টেস্টিং ফাইলগুলিতে মোতায়েন সক্ষম করতে হয়েছিল (তবে কোনও পাথ যোগ করা হয়নি) এবং তারপরে ডিপোরিয়ামটিতে টেস্টপ্রজেক্টের সাথে সম্পর্কিত এক্সএমএল ফাইলের পন্থাটি উল্লেখ করতে হবে।

আশাকরি এটা সাহায্য করবে.


2
আমার সমস্যাটি এখানে উল্লিখিত আপেক্ষিক পথ ছিল, আমি ভেবেছিলাম এক্সএমএলটি যে ডিরেক্টরিটি পরীক্ষা ছিল সেখানে থাকা উচিত, তবে এটি প্রকল্পের মূলের মধ্যে থাকা বা এটি যে ডিরেক্টরিতে ছিল সেটির পূর্ববর্তী হওয়া দরকার
ওয়েস গ্রান্ট

2

আমার একই সমস্যা ছিল তবে আমার স্থানীয়.টেসেটেটিং ফাইলের পরিবর্তে ট্রেসএন্ডটেষ্টস্টেপসেটেস্টেটিং ফাইলের দিকে ইঙ্গিত করার দরকার ছিল। আপনি টেস্ট / সিলেক্ট অ্যাক্টিভ টেস্ট সেটিংস মেনুতে এক থেকে অন্যটিতে পরিবর্তন করতে পারেন can


2

কপিলোকল যে পরিস্থিতিতে কাজ করে না সেই পরিস্থিতিতে ডেটা বা কনফিগারেশনের জন্য এটি ব্যবহারের সাধারণ পদ্ধতিটির পরিবর্তে বিশেষত ডিএল এর জন্য নির্দিষ্ট করে রাখার উপায় উল্লেখ করে গ্রহণযোগ্য উত্তরটি বাড়িয়ে দিতে চাই:

[DeploymentItem("bin\\release\\iRock.dll")]
[DeploymentItem("bin\\debug\\iRock.dll")]

1

টেস্টসেটিং ফাইলটি ব্যবহার না করে একাধিক সমাধানে অন্তর্ভুক্ত পরীক্ষার প্রকল্পগুলির জন্য নিম্নলিখিত ভিএস ২০১২ তে কাজ করে:

1) আপনি যে ফাইল এবং ফোল্ডারগুলি পরীক্ষা প্রকল্প ডিরেক্টরিতে একটি ফোল্ডারে স্থাপন করতে চান তা সাজান।

2) প্রকল্পের বৈশিষ্ট্যগুলিতে একটি পোস্ট বিল্ড স্টেপ তৈরি করুন

xcopy /Y /S /i "$(ProjectDir)<Project_Folder_Name>\*" "$(TargetDir)<Deployment_Folder_Name>"

$(ProjectDir)এবং $(TargetDir)ম্যাক্রোগুলি যা ভিএস দ্বারা ব্যাখ্যা করা হবে এবং এরূপ হিসাবে অন্তর্ভুক্ত করা উচিত।

<Project_Folder_Name> পদক্ষেপ 1 এ তৈরি ফোল্ডারের নাম।

<Deployment_Folder_Name>সেই ফোল্ডারের নাম যেখানে পরীক্ষার ফাইলগুলি স্থাপন করা হবে এবং নাম দেওয়া উচিত যাতে একাধিক পরীক্ষার প্রকল্প একই ডিরেক্টরিতে স্থাপন করা হয়, যেমন এটি অনন্য হবে <Project_Name>_TestInputs

পরীক্ষামূলক মিথস্ক্রিয়া সীমাবদ্ধ করতে ভাগ করা অবস্থানগুলিতে টেস্ট ফাইলগুলি লক্ষ্য ডিরেক্টরি ডিপ্লোয়মেন্ট ফোল্ডারেও অনুলিপি করা উচিত। $(ProjectDir)ম্যাক্রোর সাথে সম্পর্কিত উত্স পথ সরবরাহ করুন । উদাহরণস্বরূপ "$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"

3) অ্যা [DeploymentItem(source, destination)] প্রতিটি পরীক্ষার পদ্ধতিতে কোনও স্থাপনা ফাইল (সেরা অনুশীলন) ব্যবহার করে বা পরীক্ষার শ্রেণিতে (অলস বা তাত্ক্ষণিকের জন্য সহজ অনুশীলন, এবং পূর্বে ব্যবহৃত আপেক্ষিক পাথ বা টেস্টেসেটিং ফাইলগুলি হালনাগাদ করার সহজতম উপায়) এর মধ্যে একটি সম্পত্তি যুক্ত করুন )।

একটি পরীক্ষা পদ্ধতি তারিখে, sourceলক্ষ্য নির্দেশিকাতে পরীক্ষা পদ্ধতি আপেক্ষিক ব্যবহার করা দ্বারা নির্মিত হিসাবে ফাইল বা ডিরেক্টরির পাথ xcopyএবং destinationডিরেক্টরির যেখানে এটি স্থাপনার ডিরেক্টরির আপেক্ষিক তৈরি করা হবে পথ। যাতে পরীক্ষাগুলি লক্ষ্য ডিরেক্টরি বা একটি ডিপ্লোয়মেন্ট ডিরেক্টরিতে সামঞ্জস্যপূর্ণ হয়। গন্তব্য পথটি কোনও ফাইল রেফারেন্স ছাড়াই উত্স পথের সমান হওয়া উচিত। উদাহরণ: [DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]DeploymentItemপ্রত্যেক পদ্ধতি যে ফাইল বা ডিরেক্টরির ব্যবহার করে অন্তর্ভুক্ত করা উচিত নয়।

একটি ক্লাসে, sourceএবং destinationউভয়ই ফোল্ডারের নাম দ্বারা ডিরেক্টরি ডিরেক্টরিতে তৈরি করা নাম xcopy; ক্লাসে কোনও পরীক্ষা চালানো হলে এটি পুরো ফোল্ডারটিকে ডিপ্লোয়মেন্ট ডিরেক্টরিতে অনুলিপি করবে। উদাহরণ:[DeploymentItem("Example_TestInputs","Example_TestInputs")]

4) পরীক্ষা পদ্ধতি, আপনি এখন ফাইলগুলি অ্যাক্সেস করুন এবং আত্মবিশ্বাসের সঙ্গে ডিরেক্টরি তারা কাজ ডিরেক্টরির মধ্যে যেখানে ভিসুয়াল স্টুডিও যে দিন, এটা করা যেমন সিদ্ধান্ত নিয়েছে নির্বিশেষে হতে হবে পারেন File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")


0

ভিজ্যুয়াল স্টুডিওর মধ্যে পোস্ট-বিল্ড ইভেন্ট ইভেন্ট কমান্ড লাইনটি ব্যবহার করে দেখুন (যদি আপনি সেই আইডিই ব্যবহার করছেন)।


3
আমি আছি, তবে মনে হচ্ছে কিছুটা হ্যাক। এটি মোটামুটি সাধারণ পরিস্থিতি হতে হবে এবং আমি আশা করি যে আমি সঠিকভাবে সেট করছি না এমন কিছু বিকল্প বা সম্পত্তি রয়েছে।
এরিক শুনোভার

0

ভিজ্যুয়াল স্টুডিও ২০১২-এ আপনার সাধারণ মামলার জন্য ডিপ্লোয়মেন্টআইটেম অ্যাট্রিবিউট লাগবে না। আমার উত্তর এখানে দেখুন


0
[TestMethod]
[DeploymentItem("ProjectName/Folder/SubFolder/file.xml", "Folder/Subfolder")]
public void YourTestMethod()
{
   // in the method you are testing you should have this:
   var filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase) + "/Folder/Subfolder/file.xml";
}

0

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

আমার অন্যান্য উত্তর এখানে সম্পূর্ণ বিবরণ। https://stackoverflow.com/a/53004985/2989655

আশাকরি এটা সাহায্য করবে.

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