স্কেলএস্টেস্ট এবং স্কালা স্পেস ইউনিট পরীক্ষা ফ্রেমওয়ার্কগুলির মধ্যে পার্থক্য কী?


121

উভয় হ'ল বিডিডি (আচরণের চালিত বিকাশ) স্কালায় লিখিত স্কালার জন্য সক্ষম ইউনিট পরীক্ষার কাঠামো। আর চশমা উপর নির্মিত হয় এছাড়াও থাকতে পারে ScalaTest ফ্রেমওয়ার্ক। কিন্তু স্পেকস স্কেলটেষ্টের অফারগুলি কী দেয়? পার্থক্য কি?


1
আমি বিশ্বাস করি না যে এটি স্পষ্টভাবে স্ক্যালটেষ্টের উপর নির্মিত say নোট করুন যে পমের উপর নির্ভরতা optionচ্ছিক। স্পেসে যদিও এর স্পেসিফিকেশনগুলির স্কেলএস্টেস্ট স্যুট হিসাবে চালিত করার ক্ষমতা রয়েছে।
জিফ রেডি

স্কেলেস্টেট বেশ কয়েকটি লিবসের জন্য সুনির্দিষ্ট সমর্থন সহ স্কেলটেস্টপ্লাস সরবরাহ করে। এটি আকর্ষণীয় হতে পারে। উদাহরণস্বরূপ, তাদের খেলার খেলার কাঠামোর জন্য
স্কেলটেস্টপ্লাস রয়েছে

উত্তর:


172

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

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

মাধ্যমে ScalaTest সমর্থন BDD তার Spec, FeatureSpec, WordSpec, FlatSpec, এবং GivenWhenThenবৈশিষ্ট্যগুলো, এবং এছাড়াও বৈশিষ্ট্যগুলো যাতে আপনি সম্ভবত মিশ্রিত করা একটা চমৎকার মিলকারীর সিনট্যাক্স পেতে পারেন। আপনি যদি "উচিত" পছন্দ করেন তবে আপনি হোল্ডম্যাচার্সে মিশ্রিত করুন। আপনি যদি "অবশ্যই" পছন্দ করেন তবে আপনি মিশ্রিত হন MustMatchers। তবে আপনি যদি বিডিডি পছন্দ করেন তবে ম্যাচার সিনট্যাক্স পছন্দ করেন না, আপনি ম্যাথারস বৈশিষ্ট্যে মিশ্রিত না করে কেবল স্কেলএস্টের স্পেক বৈশিষ্ট্য ব্যবহার করতে পারেন। স্পেসগুলির একটি স্পেসিফিকেশন ক্লাস থাকে যা আপনি প্রসারিত করেন এবং আপনার ম্যাচারের এক্সপ্রেশনগুলিতে আপনাকে অবশ্যই "অবশ্যই" শব্দটি ব্যবহার করতে হবে। এখানে একটি বড় দার্শনিক পার্থক্য স্পষ্ট যে স্কেলএস্টেস্ট আপনাকে আরও অনেক পছন্দ দেয়। এই পছন্দের স্থানটি নেভিগেট করা সহজ করার জন্য, আমি এখানে একটি সিদ্ধান্ত গাছ সরবরাহ করি:

http://www.scalatest.org/quick_start

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

স্ক্যালাস্টেস্টের চেয়ে স্পেকসের আরও ম্যাচচার রয়েছে এবং আমি মনে করি যে ডিজাইনের মনোভাবের মধ্যে একটি পার্থক্য প্রতিফলিত করে। আমি আসলে আমি তৈরি ম্যাচেরার সিনট্যাক্সের সম্ভবত 2/3 কেটেছি এবং মুক্তির জন্য বিবেচনা করেছি। আমি ভবিষ্যতে প্রকাশে আরও ম্যাথার যুক্ত করব, তবে নিশ্চিত হতে চেয়েছিলাম ব্যবহারকারীরা যুক্ত করার আগে ব্যবহারকারীরা আসলে কিছু চাইছিল। তবে স্কালাস্টেস্টের ম্যাচারগুলিতে একটি গতিশীল সম্পত্তি ম্যাচার ম্যাচ সিন্ট্যাক্স অন্তর্ভুক্ত রয়েছে that উদাহরণস্বরূপ স্পেক্সগুলিতে আপনি একটিতে লিখতে পারেন java.io.File:

file must beDirectory

এটি আসবে isDirectoryএবং এটি সত্য কিনা তা নিশ্চিত করবে। স্কেলারটেষ্টের কাছে java.io.Filesবর্তমানে কোনও বিশেষ ম্যাচচার নেই , তবে স্কাল টেস্টে আপনি কেবল এই জাতীয় গতিশীল চেক ব্যবহার করতে পারেন:

file must be a ('directory)

যে কোনও সময় আপনি পরে কোনও চিহ্নটি পাস করেন be, এটি কোনও পদ্ধতি বা ক্ষেত্রের নাম directoryবা কোনও নামকৃত পদ্ধতি অনুসন্ধান করার জন্য প্রতিবিম্বটি ব্যবহার করবে isDirectory। এটিকে স্থিতিশীল করার একটি উপায়ও রয়েছে BePropertyMatcherযা একটি সংজ্ঞায়িত করে (যার জন্য সাধারণত সাধারণত 2 বা 3 লাইন কোডের প্রয়োজন হয়)। সুতরাং মূলত স্কালাতেস্টে আমি কম এপিআই দিয়ে আরও কার্যকারিতা সরবরাহ করার চেষ্টা করি।

চশমা এবং স্ক্যালাস্টেস্টের মধ্যে অন্য একটি সাধারণ নকশার মনোভাবের পার্থক্যের মধ্যে অন্তর্নিহিত রূপান্তর জড়িত। ডিফল্টরূপে আপনি কেবলমাত্র স্কেলএস্টেস্ট ব্যবহার করার সময় একটি মাত্র অন্তর্নিহিত রূপান্তর পাবেন যা এটি ===অপারেটরকে সবকিছুর উপরে রাখে । (আপনার যদি প্রয়োজন হয় তবে আপনি কোডের এক লাইনের সাথে এই অন্তর্নিহিত রূপান্তরটি "অফ" করতে পারেন you আপনার কেবলমাত্র এটি করার প্রয়োজন হবে যদি আপনি তার নিজস্ব কিছু আছে যা পরীক্ষা করার চেষ্টা করছেন is=== অপারেটর , এবং আপনি কোনও দ্বন্দ্ব পান। ) স্কালাটেষ্ট আরও অনেকগুলি অন্তর্নিহিত রূপান্তরগুলি সংজ্ঞায়িত করে তবে এগুলি ব্যবহার করার জন্য আপনাকে কোনও বৈশিষ্ট্যে মিশ্রিত করে বা আমদানি করে আপনার কোডে স্পষ্টভাবে তাদের "আমন্ত্রণ" করতে হবে। আপনি ক্লাস প্রসারিত যখনSpecificationচশমাগুলিতে আমি মনে করি আপনি ডিফল্টরূপে কয়েক ডজন অন্তর্নিহিত রূপান্তর পেয়েছেন। বাস্তবে এটি কতটা তাত্পর্যপূর্ণ তা আমি নিশ্চিত নই, তবে আমি অনুমান করি যে লোকেরা কোডটি পরীক্ষা করতে চায় যা তাদের নিজস্ব ফলস্বরূপ ব্যবহার করে এবং কখনও কখনও পরীক্ষার কাঠামোর প্রভাব এবং উত্পাদন কোডের মধ্যে দ্বন্দ্ব থাকতে পারে। যখন এটি ঘটে তখন আমি মনে করি স্ক্যালটেষ্টে চশমাগুলির চেয়ে সমস্যাটি ঘিরে কাজ করা আরও সহজ হতে পারে।

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

  • ===, যার অর্থ সমান
  • >যার অর্থ বৃহত্তর
  • <, কম
  • >=, বৃহত্তর অথবা সমান
  • <=, এর চেয়ে কম বা সমান

এটাই. সুতরাং এই জিনিসগুলি দেখতে অনেকটা দেখতে কী বোঝায়। যদি আপনি অন্য কারও কোডে দেখতে পান:

result should be <= 7

আমার আশা হ'ল এর <=অর্থ কী তা অনুমান করার জন্য আপনার এপিআই ডকুমেন্টেশন চালাতে হবে না । বিপরীতে, চশমা অপারেটরদের সাথে অনেক বেশি মুক্ত। এর সাথে কোনও ভুল নেই, তবে এটি একটি পার্থক্য। অপারেটর কোড আরও সংক্ষিপ্ত করতে পারেন, কিন্তু ট্রেড বন্ধ আপনি ডকুমেন্টেশন চালানোর জন্য যখন তোমার মত জিনিষ খুঁজে পেতে আছে পারে ->-, >>, |, |>, !, অথবা ^^^আপনার সহকর্মীর পরীক্ষা কোডে (যা সব চশমা বিশেষ অর্থ আছে)।

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

স্কেলএস্টে আরও অন্তর্দৃষ্টি দেওয়ার জন্য, আপনি ২০০৯ এর ডিভোএক্সএক্স সম্মেলনে আমি যে "স্কেলটেষ্টের সাথে উচ্চতর হন" উপস্থাপনাটি দেখতে পারেন:

http://parleys.com/play/514892260364bc17fc56bde3/chapter0/about


6
স্কেলেস্টের পঠনযোগ্যতা আমার পক্ষে স্কেলার চশমার তুলনায় একটি বড় বিজয়ী পয়েন্ট।
nemoo

49

প্রধান পার্থক্যগুলি হ'ল (বেশিরভাগ ক্ষেত্রে একটি চশমা দৃষ্টিকোণ থেকে :-)):

  • স্কেলএস্টেস্টে স্পেকসের চেয়ে আরও বেশি "পরীক্ষার শৈলী" সরবরাহ করা হয় ( প্রতিটি শৈলীর বিস্তারিত দৃষ্টিভঙ্গি পেতে আপনি দ্রুত প্রারম্ভিক পৃষ্ঠাতে প্রতিটি বুলেট পয়েন্ট দেখতে পারেন)

  • স্কেলএস্টেস্ট এবং স্পেসে ম্যাচেরদের আলাদা সেট রয়েছে। আপনি এগুলি এখানে স্কালাতেস্টের জন্য এবং এখানে চশমার জন্য তুলনা করতে পারেন । জিনিসগুলির সেই দিকে, স্পেসে আপনার স্পেসিফিকেশন লেখার সময় পছন্দ করতে পারে এমন অনেকগুলি ছোট বৈশিষ্ট্য রয়েছে: এক্সএমএল ম্যাথার্স, ম্যাথচার্স কম্পোজিশন (ম্যাটচারগুলিকে রূপান্তরিত করে পুনরায় ব্যবহার করার একটি সহজ উপায়), সুনির্দিষ্ট ব্যর্থতা, দীর্ঘ স্ট্রিংয়ের বিশদ পার্থক্য, .. ।

  • মকিতোকে চশমাগুলিতে একটি দুর্দান্ত বিডিডি সহায়তা দেওয়া হয়েছে: মকিতো

  • চশমাগুলিতে ডেটা টেবিল রয়েছে যা এক ধরণের টেবিলের মধ্যে ছোট ছোট উদাহরণগুলি অনেকগুলি গ্রুপ করার অনুমতি দেয় (যদি আপনি অপারেটরদের টেবিলের বিভাজনকারী হিসাবে ব্যবহার করা যেতে পারে)

  • চশমাগুলিতে, আপনি উদাহরণগুলিকে সংজ্ঞায়িত করতে পারেন যা লিবিডাম হিসাবে নেস্টেড এবং প্রতিটি স্তরে স্বয়ংক্রিয়ভাবে পরিষ্কার-পরিচ্ছন্ন

এটি অবশ্যই খুব আংশিক এবং পক্ষপাতদুষ্ট তুলনা এবং অন্যান্য অনেক পার্থক্য বিদ্যমান (এবং গ্রন্থাগারগুলি এখনও বিকশিত হচ্ছে, ...)।

দিনের শেষে আমি মনে করি এটি সত্যিই আপনার পরীক্ষার / নির্দিষ্ট শৈলীর উপর নির্ভর করে। যদি এটি সাধারণ (সাধারণ স্পেসিফিকেশন কাঠামো, সেটআপস, প্রত্যাশা, ...) থাকে তবে উভয় গ্রন্থাগারই একই রকম প্রদর্শিত হবে। অন্যথায়, কীভাবে জিনিসগুলি করা উচিত তা উভয়েরই গ্রহণ। মধ্যে: এই একটি শেষ উদাহরণ হিসাবে আপনি ট্যাগিং কটাক্ষপাত থাকতে পারে ScalaTest এবং চশমা

আশা করি এটা কাজে লাগবে.


চশমা 2 কভার করার জন্য এটি আপডেট করা সম্ভব হবে? :)
জোফার 4'15


2

আইডিই সমর্থন অন্য পয়েন্ট হতে পারে

আমি ইউনিকের মাধ্যমে স্পেসগুলি গ্রহণের চেষ্টা করছিলাম, এবং আমি সরকারী সমাধানটি কিছুটা "হ্যাকি" বলে খুঁজে পেয়েছি। স্পেসস সেটআপ: http://code.google.com/p/specs/wiki/RunningSpecs#Run_yur_specifications_with_JUnit4_in_Elipse

স্ক্যালএস্টেস্টের সংহতকরণ (জুনিটের মাধ্যমেও) মনে হচ্ছে কিছুটা কম y তবুও, আমি জুনিত এবং জাভার পাশাপাশি তাদের কোনও কাজ করতে পারি নি।

স্ক্যালএস্টেস্ট সেটআপ: http://groups.google.com/group/scalatest-users/web/running-scalatest-from-eclipse


আমি এখন স্কেলএস্টেস্ট লিঙ্কটির জন্য একটি 404 পেয়েছি। চেষ্টা scalatest.org/user_guide/using_junit_runner
ডিএনএ

0

যদি কোনও সিদ্ধান্তের উপাদানটি সংকলনের সময় হয় তবে স্কেলটেস্ট আরও ভাল সম্পাদন করে।

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

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