ইউনিট পরীক্ষা, নুনিট বা ভিজ্যুয়াল স্টুডিও?


114

আমি আমার ইউনিট পরীক্ষা চালানোর জন্য ভিজ্যুয়াল স্টুডিও (কখনও কখনও পুনরায় ভাগ করা) ব্যবহার করছি।

আমি নুনিটের কথা শুনেছি, তবে আমি এ সম্পর্কে অনেক কিছুই জানি না ...

আমি কি এটি সম্পর্কে যত্ন নেওয়া উচিত? এটি ভিজ্যুয়াল স্টুডিওর চেয়ে ভাল কিছু সরবরাহ করতে পারে?

আমার নুনিট ব্যবহার করা উচিত এবং কেন?


12
এক্সুনিটকেও বিবেচনা করুন তবে যাই হোক না কেন আপনি টেস্টড্রাইভন ডটনে দেখুন
ইয়ান


xunit.net চেষ্টা করুন। এটি। নেট অ্যাপের জন্য ওপেন সোর্স এবং দুর্দান্ত ইউনিট পরীক্ষার কাঠামো।
মুকেশ অরোরা

উত্তর:


100

এমএস-টেস্টের তুলনায় নুনির কয়েকটি সুবিধা রয়েছে

  1. স্যুট অ্যাট্রিবিউট - পরীক্ষাগুলিকে একত্রিত করতে এবং সেগুলি পৃথকভাবে কার্যকর করতে পারে (উদাহরণস্বরূপ দ্রুত এবং ধীর পরীক্ষার সাহায্যে বৃহত প্রকল্পগুলির জন্য দরকারী)
  2. পঠনযোগ্য আসার পদ্ধতি, যেমন Assert.AreEqual(expected, actual)বনামAssert.That(actual, Is.EqualTo(expected))
  3. নুনিটের ঘন ঘন সংস্করণ আপডেট রয়েছে - এমএস-টেস্টের প্রতি ভিএস সংস্করণে কেবল একটিই রয়েছে।
  4. রিশার্পার এবং টেস্টড্রাইভন.এনইটি সহ অনেক সংহত চালক
  5. প্রত্যাশিত ব্যতিক্রম বার্তা দৃ as়তা - NUnit এ অ্যাট্রিবিউট ব্যবহার করে করা যেতে পারে তবে এমএস-টেস্টে ট্রাই-ক্যাচ ব্যবহার করে অবশ্যই করা উচিত
  6. [TestCase]! NUnit প্যারামিটার -যুক্ত পরীক্ষার জন্য অনুমতি দেয়।

32
ব্যতিক্রমগুলি এমএস-টেস্টে প্রত্যাশিত এক্সেকশনঅ্যাট্রিবিউটেও গুণযুক্ত করে দেওয়া যেতে পারে।
স্টিফান স্টেইনগার

9
আমি Assert এর সাথে NUnit ব্যবহার করব h
অলিভার হানাপ্পি

25
# 3 কোনও বৈশিষ্ট্য নয়, এটি একটি সমস্যা এবং # 5 100% মিথ্যা; এমএস টেস্টের প্রত্যাশিত এক্সপ্রেশন অ্যাট্রিবিউট থাকে এবং সর্বদা থাকে
র‌্যান্ডল্ফো

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

7
"# 3 কোনও বৈশিষ্ট্য নয়, এটি একটি সমস্যা" - খুব
চটজলদি

72

আমার বর্তমান দৃষ্টিকোণ থেকে (প্রায় 10 বিকাশকারী গড়ে 8 মাস বিকাশের পরে) আমি নিম্নলিখিত কারণে MSTest ব্যবহারের বিরুদ্ধে পরামর্শ দেব

  • নিজেই কাঠামো বেশ ধীর। আপনি যে টেস্ট কোডটি লিখেছেন তা আমি বোঝাতে চাই না - এটি আপনার নিয়ন্ত্রণে। আমি বলতে চাইছি যে পরীক্ষাগুলি পরিচালিত কাঠামোটি ধীর গতির, এটি কোনও পরীক্ষার স্যুট, একক পরীক্ষা ইত্যাদি চলছে whether
  • টেস্ট-মেটাডেটা ফাইল রাখার প্রয়োজন যা বেশ কয়েকটি বিকাশকারী যখন এটির উপর কাজ করে (সর্বদা মেটাডেটা পুনরায় তৈরি করা হয়) তখন সবসময় জটিলতার দিকে যায়। প্রতিটি অন্যান্য পরীক্ষার স্যুটকে একটি মেটাডেটা ফাইলের প্রয়োজন হয় না। আপনার পরীক্ষাগুলি সংগঠিত করা একরকম দুর্দান্ত তবে আপনি নেমস্পেস, ক্লাস এবং পদ্ধতির নামের মাধ্যমে এটি অর্জন করতে পারেন।
  • অবিচ্ছিন্ন একীকরণ করা, আপনি যদি নিজের বিল্ড মেশিনে ইউনিট পরীক্ষা চালাতে চান তবে আপনাকে সেই মেশিনে ভিজ্যুয়াল স্টুডিও ইনস্টল করতে হবে।

অন্য কথায়, আমি যদি 8 মাস আগে আবার সিদ্ধান্ত নিতে পারি তবে আমি সম্ভবত নুনিটকে নেব। আমার একীভূত পরীক্ষার ফলাফলের প্রতিবেদন নাও থাকতে পারে তবে বিকাশকারীদের আরও বিরামবিহীন পরীক্ষার অভিজ্ঞতা থাকতে পারে।


6
+1, আপনার পছন্দ না থাকলে MSTest এড়ান। বিভিন্ন ওপেন সোর্স ফ্রেমওয়ার্কগুলি আরও ভাল (xUnit, NUnit, MbUnit, ইত্যাদি)।
ব্র্যানন

49

এমএস টেস্ট নিয়ে আমার অভিজ্ঞতা এখানে

  • আমরা প্রায় 3800 টেস্ট নিয়ে এমএস টেস্ট চালাচ্ছি।
  • পরীক্ষাগুলি কেবল চালানো শুরু করতে খুব দীর্ঘ সময় নেয়, যা একক পরীক্ষা চালানোর সময় বেদনাদায়ক হয়।
  • পরীক্ষাগুলি কার্যকর করতে প্রায় 1 গিগাবাইট মেমরি লাগে। না, এটি আমাদের পরীক্ষাগুলিতে মেমরি ফাঁস হওয়ার কারণে নয়। প্রায়শই আমরা আউটআফ মেমরি এক্সেপশনগুলিতে চলে যাই।
  • যেহেতু এটি প্রচুর সংস্থান ব্যবহার করে, আমরা ব্যাচ-ফাইলগুলি থেকে পরীক্ষাগুলি কার্যকর করতে শুরু করি। তাহলে পুরো ইন্টিগ্রেশনটি কীসের জন্য ভাল?
  • এটি বগি এবং অস্থির:
    • উদাহরণস্বরূপ, আপনি যদি কোনও পরীক্ষা থেকে [উপেক্ষা করুন] বৈশিষ্ট্যটি সরিয়ে থাকেন তবে এটি এটি সনাক্ত করতে পারে না, কারণ এটি কোথাও পরীক্ষাগুলির তথ্য ক্যাশে করে। আপনাকে টেস্টলিস্টটি রিফ্রেশ করতে হবে যা কখনও কখনও সমস্যার সমাধান করে, বা ভিএস পুনরায় চালু করে need
    • এটি এলোমেলোভাবে আউটআউট ডিরেক্টরিতে রেফারেন্স সমাবেশগুলি অনুলিপি করে না।
    • স্থাপনার আইটেম (অতিরিক্ত ফাইলগুলি ব্যবহার করতে হবে) কেবল সঠিকভাবে কাজ করে না। এলোমেলোভাবে এগুলি উপেক্ষা করা হয়।
  • Vsmdi এবং testrunconfig ফাইলগুলিতে গোপন (পরীক্ষার কোডে দৃশ্যমান নয়) তথ্য রয়েছে। আপনি যদি এটি যত্ন না করেন তবে এটি কার্যকর নাও হতে পারে।
  • কার্যকরীভাবে এটি NUnit এর সাথে তুলনীয় হতে পারে, তবে আপনি ভিএস পরীক্ষক সংস্করণ ব্যবহার করা বিবেচনা করলে এটি খুব ব্যয়বহুল।

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


অন্য আপডেট : আমরা এখন ভিএস 2013 ব্যবহার করছি। অনেক কিছুই বদলে গেছে। আমরা শুরু করার পর থেকে তারা তৃতীয়বারের মতো এমএস টেস্টের রানারকে নতুন করে লিখেছিল। এটি প্রচুর ব্রেকিং পরিবর্তন ঘটিয়েছে, তবে নতুন সংস্করণটি আরও ভাল কিছু করছে না। আমরা আনন্দিত যে আমরা এমএস টেস্টের অভিনব বৈশিষ্ট্যগুলি ব্যবহার করি নি, কারণ সেগুলি এখন আর সমর্থিত নয়। এটা সত্যিই লজ্জাজনক। আমরা এখনও সব ইউনিট পরীক্ষা তৈরি করতে এবং চালাতে স্ক্রিপ্ট ব্যবহার করছি, কারণ এটি হ্যান্ডিয়ার। চলমান পরীক্ষাগুলি শুরু করতে ভিজ্যুয়াল স্টুডিওতে কয়েক মিনিটের প্রয়োজন হয় (প্রথম পরীক্ষা শুরু হওয়া অবধি সংকলনের পরে সময় ব্যবস্থা)। তারা সম্ভবত এটি আপডেটের সাথে সংশোধন করে এবং এটি আমাদের প্রকল্পের একটি নির্দিষ্ট সমস্যা হতে পারে। তবে, একই পরীক্ষা চালানোর সময় রিশার্পার অনেক দ্রুত হয় much

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


আমি সম্প্রতি ডিবাগ না করে এগুলি চালানো শুরু করেছি, এটিকে আরও দ্রুত এবং আরও অনেকগুলি কীভাবে নুনিট ব্যবহার করা যেতে পারে তার মতো করে তোলে তবে এটি এখনও স্তন্যপান। দেখে মনে হচ্ছে দুর্বল অভিনয়টি ডিবাগ করার সময় ভিজ্যুয়াল স্টুডিওতে মজার স্টাফ করার সাথে সম্পর্কিত। (এটি, কেবল "F5" এর চেয়ে "ctrl + F5" ব্যবহার করুন - আপনি এখনও ভিএস-এর সাথে দুর্দান্ত "সংহতকরণ"
পেয়েছেন

ভাল উত্তর, আমার সময়
সাশ্রয় করেছে

18

নুনিট ভিজ্যুয়াল স্টুডিওর সাথে একত্রে ব্যবহৃত হতে পারে । এটি একটি কাঠামো একটি পৃথক প্রোগ্রাম নয়। সুতরাং আপনি যদি এটি আপনার জন্য উপযুক্ত হয় তবে এটি যত্ন নিতে পারেন :)।

ওয়েট পাঠ্য http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=nunitit&DownloadId=61802

"প্লাগইন ইনস্টল করার পরে আপনি সরঞ্জাম মেনুতে একটি নতুন সাবমেনু পাবেন" "

এটি আমদানি করার জন্য আরও তথ্যের জন্য http://nunitit.codeplex.com/ দেখুন ।

এছাড়াও, এসও অনুসন্ধান ব্যবহার করে অনেক কিছু পাওয়া যায়। এই বিষয়টিতে উদাহরণস্বরূপ এমএস স্ট্যান্ডার্ড পরীক্ষার চেয়ে নুনিটের সুবিধার তালিকা রয়েছে।



3

নুনিট ভিএস এর স্ট্যান্ডার্ড সংস্করণ নিয়ে কাজ করে


1
ভিজ্যুয়াল স্টুডিও এক্সপ্রেস সংস্করণগুলি ভুলে যাবেন না।
chobo2

ইউনিট পরীক্ষা সমাবেশ প্রকল্পে পোস্ট-বিল্ড পদক্ষেপ - \ পথ \ থেকে U nUnit $ (টার্গেটফিলনাম)
স্টিভ গিলহাম

1

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


1

নুনিট হ'ল একক পরীক্ষার কাঠামো, যা পুনঃ ভাগ করে নেওয়া দ্বারা সমর্থিত। আমি মনে করি আপনি মাইক্রোসফ্টের ইউনিট পরীক্ষার কাঠামোটি ব্যবহার করছেন, সুতরাং নুনিট হ'ল মাইক্রোসফ্টের পণ্যের বিকল্প মাত্র;)

এখানে নুনিটের হোমপৃষ্ঠাতে লিঙ্কটি রয়েছে: http://nunit.org


সুতরাং আপনি বোঝাতে চেয়েছেন যে নুনিট মাইক্রোসফ্ট ইউনিট পরীক্ষার কাঠামো ছাড়া আর কিছু আনেন না?
টিম

এটি করে, আমার লিঙ্কটি উদাহরণ হিসাবে আমার পোস্টে (উপরে) দেখুন।
বাসতিজন

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

এটি আরও কিছু বিস্তৃত স্পেসিফিকেশন এবং অন্যান্য তৈরির জন্য বিভিন্ন পরীক্ষার জন্য একটি পরীক্ষা পদ্ধতি চালানোর জন্য [টেস্টকেস], [থিওরি] এর মতো কিছু দরকারী কনস্ট্রাকশন সরবরাহ করে। এটি দৃ for়তার জন্য খুব সুন্দর সাবলীল বাক্য গঠন সমর্থন করে। এবং সর্বশেষে তবে সর্বনিম্ন নয়, এটি এমএসেস্টেস্টের চেয়ে অনেক বেশি প্রশস্ত ব্যবহৃত হয়, সুতরাং আপনি যদি সমস্যায় পড়েন তবে সমর্থন / তথ্য পাওয়ার আরও ভাল সুযোগ পাবেন।
বয়স্ক_জর্জ

0

ইন NUnit , পরীক্ষার সমান্তরাল মৃত্যুদন্ড কার্যকর করা হয় না। বরং, এটি প্রদর্শিত হয় যে সমস্ত পরীক্ষা একক থ্রেডে চালিত হয়। এমএসটিস্টে, প্রতিটি পরীক্ষা পৃথক থ্রেডে ইনস্ট্যান্ট করা হয়, এর ফলে রানগুলি আন্তঃস্তৃত হয়। অতএব, যদি পরীক্ষা A এর সাফল্যের জন্য B বি পরীক্ষা-এর উপর নির্ভর করে, এটি সম্ভবত ব্যর্থ হবে কারণ পরীক্ষা বি সম্ভবত পরীক্ষা A চলমান শুরু হবে।


-12

আপনি যদি ভিজ্যুয়াল স্টুডিও ব্যবহার করছেন তবে আপনাকে ইউনিট পরীক্ষা করার জন্য নুনিট ব্যবহার করতে হবে এবং আপনি জাভা (নেটবিয়ান) চালাচ্ছেন তবে ইউনিট পরীক্ষার জন্য আপনাকে জুনিট ব্যবহার করতে হবে।

একটি সাধারণ ক্যালকুলেটর ইউনিট পরীক্ষার জন্য এখানে একটি উদাহরণ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SimpleCalculator;
using NUnit.Framework;

namespace CalculatorTest
{
    [TestFixture]
    public class Class1
    {
        public Calculator _calculator;
        [TestFixtureSetUp]
        public void Initialize()
        {
            _calculator = new Calculator();
        }
        [Test]
        public void DivideTest()
        {
            int a = 10;
            int b = 2;
            int expectedValue = a / b;
            int actualvalue = _calculator.Divide(a, b);
            Assert.AreEqual(expectedValue, actualvalue,"Failure");

        }
    }
}

4
অবশ্যই আপনাকে NUnit ব্যবহার করতে হবে না , এটি কেবল একটি কাঠামো, কেউ আপনাকে এটি ব্যবহার করতে বাধ্য করে না। আপনি বিরক্ত হলে আপনি নিজের লেখাও লিখতে পারেন।
হিমব্রুমবিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.