কিভাবে আমি ইউনিট পরীক্ষা স্থিরতা?

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

আমি জানি যে টেকনিক্যালি এই একটি ইন্টিগ্রেশন পরীক্ষা (একটি ইউনিট পরীক্ষা না) হবে, কিন্তু আমি নিম্নলিখিত জন্য সেরা কৌশল খুঁজে বের করতে চান:

  1. পরীক্ষার প্রশ্নসমূহ করুন
  2. পরীক্ষার সন্নিবেশ আমি কিভাবে জানতে পারি যে এটি ব্যর্থ হয়েছে যদি এটি ব্যর্থ হয়ে যায়? আমি ঢোকাতে এবং তারপর জিজ্ঞাসা করে এটি পরীক্ষা করতে পারেন, কিন্তু কিভাবে আমি জানতে পারি যে প্রশ্নটি ভুল ছিল না? করুন
  3. আপডেট এবং মুছে ফেলা পরীক্ষার - পরীক্ষার ঢালাই হিসাবে

এই কাজ করার সেরা চর্চা কি?


এসকিউএল টেস্টিং সম্পর্কে: আমি সচেতন যে এটি করা যেতে পারে, কিন্তু যদি আমি NH / NTP এর মতো একটি O / R Mapper ব্যবহার করি তবে এটি আউটপুট ক্যোয়ারীর জন্য ব্যবহৃত উপনামগুলির মধ্যে কিছু নামকরণ যুদ্ধে সংযুক্ত করে এবং যেহেতু এটি নিশ্চিতভাবে নিশ্চিত নয় আমি যে জন্য পরীক্ষা করতে পারে

আমি শুধু, সবকিছু পরিত্যাগ করা উচিত এবং কেবল NHibernate বিশ্বাস? আমি নিশ্চিত যে এটা বুদ্ধিমান নয়

0

10 উত্তর

ডিবি ইউনিট দেখুন। এটি একটি জাভা লাইব্রেরি, কিন্তু একটি C# সমতুল্য হতে হবে। এটি আপনাকে ডেটাবেসটি ডেটাবেসের সাথে প্রস্তুত করতে দেয় যাতে আপনি ডাটাবেসে যা জানেন তা জানতে পারেন, তাহলে আপনি ডিবি ইউনিটের সাথে ডাটাবেসে কী দেখতে পাচ্ছেন তা ইন্টারফেস করতে পারেন। এটি অনেক ডাটাবেস সিস্টেমের বিরুদ্ধে চালাতে পারে, যাতে আপনি আপনার প্রকৃত ডাটাবেস সেটআপ ব্যবহার করতে পারেন, অথবা অন্য কিছু ব্যবহার করতে পারেন, যেমন জাভা এইচএসকিউএল (মেমরি বিকল্পের সাথে একটি জাভা ডেটাবেজ বাস্তবায়ন)।

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

0
যোগ

টেকনিক্যালি ইউনিট পরীক্ষাগুলি দৃঢ়তার সাথে ইউনিট পরীক্ষা নয় যে তারা একীকরণ পরীক্ষাগুলি।

সি # ব্যবহার করে mbUnit ব্যবহার করে, আপনি কেবল SqlRestoreInfo এবং RollBack অ্যাট্রিবিউট ব্যবহার করেন

    [TestFixture]
    [SqlRestoreInfo(, ,]
    public class Tests
    {

        [SetUp]
        public void Setup()
        {

        }

        [Test]
        [RollBack]
        public void TEST()
        {
           //test insert. 
        }
    }

একই NUnit মধ্যে সম্পন্ন করা যেতে পারে, অ্যাট্রিবিউট নাম অস্পষ্ট আলাদা আলাদা।

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

0
যোগ

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

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

0
যোগ

NHibernate জন্য, আমি নিশ্চিতভাবেই কোড কোডের জন্য NHibernate API উপহাস করবো - সঠিক জিনিস করার জন্য লাইব্রেরিতে বিশ্বাস করি। যদি আপনি এটি নিশ্চিত করতে চান যে ডেটা আসলে ডিবি যায়, একটি ইন্টিগ্রেশন পরীক্ষা করুন।

0
যোগ

আমি ডাটাবেস উপহাস হবে, এবং পরীক্ষা আপনি প্রত্যাশিত হয় কি তা পরীক্ষা করুন। পরীক্ষার ভুল এসকিউএল পরীক্ষা করার ঝুঁকি আছে, কিন্তু এটি একীকরণ পরীক্ষাগুলিতে সনাক্ত করা হবে

0
যোগ

আমি এখানে ইউনিট পরীক্ষার বিষয়ে একটি পোস্ট লিখছি তথ্য স্তর যা এই সঠিক সমস্যা জুড়ে জুড়ে। (লজ্জাজনক) প্লাগ জন্য ক্ষমা, কিন্তু নিবন্ধ এখানে পোস্ট করতে খুব দীর্ঘ।

আমি আশা করি যে আপনাকে সাহায্য করবে - গত 3 মাস ধরে 3 টি প্রকল্পে এটি আমার জন্য খুব ভাল কাজ করেছে।

শুভেচ্ছা সহ,

রব জি

0
যোগ

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

0
যোগ
আমি সম্মত হয়েছি, যখন আমি কখনোই টিডিডি পূরিস্ট নই, আমি স্পষ্টভাবে TDD এর উপকারের কিছুটা দেখতে পাচ্ছি কিন্তু বাস্তবতা উপেক্ষা করতে পারি না এবং আপনার ডাটাবেসের ভিতরে ও বাইরে আপনার রেকর্ডগুলি যাচাই করে নি এবং আপনার আবেদনটি আসলে কীভাবে আপনার অ্যাপ্লিকেশনটি করা যাচ্ছে না বন্য মধ্যে তাই অনেক বার আগে আমি একটি "বাগ" আমার কোড যে আমার কোড কাজ ছিল না এবং আমি আমার ইউনিট পরীক্ষা চালানো এবং অন্য বিকাশকারী আমার sproc (মন্দ evil sprocs) সব সময়ে stomped এবং খুঁজে চালানোর জন্য কখনও চালানোর চাই আমার ইউনিট পরীক্ষাগুলি দেখে তারা পুরো সিস্টেমকে উড়িয়ে দেয়।
যোগ লেখক Chris Marisic, উৎস

JDBC ভিত্তিক প্রকল্পের জন্য, Acolyte ফ্রেমওয়ার্ক ব্যবহার করা যেতে পারে: http://acolyte.eu.org । এটি একটি নির্দিষ্ট পরীক্ষা DB পরিচালনা না করে, আপনি JDBC বিমূর্ততা থেকে উপকৃত, আপনি পরীক্ষা করতে চান তথ্য অ্যাক্সেস mockup করতে পারবেন।

0
যোগ

আমি সাধারণত একটি সংগ্রহস্থল তৈরি এবং যে ব্যবহার আমার সত্তা সংরক্ষণ, তারপর একটি তাজা একটি উদ্ধার তারপর আমি বিশ্বাস করি যে পুনরুদ্ধার সংরক্ষিত সমান।

0
যোগ

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

DbUnit (Java)

DbUnit.NET

0
যোগ