সেটআপ () এবং সেটআপপূর্বক্লাস () এর মধ্যে পার্থক্য


159

JUnit এর সাথে ইউনিট পরীক্ষা করার সময়, দুটি অনুরূপ পদ্ধতি রয়েছে setUp()এবং setUpBeforeClass()। এই পদ্ধতির মধ্যে পার্থক্য কী? এছাড়াও, tearDown()এবং মধ্যে পার্থক্য কি tearDownAfterClass()?

স্বাক্ষরগুলি এখানে:

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

উত্তর:


204

@BeforeClassএবং @AfterClassখুব শুরু এবং সামগ্রিকভাবে পরীক্ষা শেষে, আগে অন্য কিছু চালানো হয় - সটীক পদ্ধতি ঠিক একবার আপনার পরীক্ষা রান সময় চালানো হবে। আসলে, এগুলি পরীক্ষার ক্লাসটি তৈরি হওয়ার আগেই চালানো হয়, এজন্য তাদের অবশ্যই ঘোষণা করতে হবে static

@Beforeএবং @Afterপদ্ধতি আগে ও যে পরীক্ষা ক্ষেত্রে পরে চালানো হবে, তাই সম্ভবত একটি পরীক্ষা রান সময় একাধিক বার চালানোর করা হবে না।

সুতরাং আসুন ধরে নেওয়া যাক আপনার ক্লাসে আপনার তিনটি পরীক্ষা হয়েছে, পদ্ধতি কলগুলির ক্রমটি হবে:

setUpBeforeClass()

  (Test class first instance constructed and the following methods called on it)
    setUp()
    test1()
    tearDown()

  (Test class second instance constructed and the following methods called on it)
    setUp()
    test2()
    tearDown()

  (Test class third instance constructed and the following methods called on it)
    setUp()
    test3()
    tearDown()

tearDownAfterClass()

15

"টেস্ট কেস" এর জন্য স্ট্যাটিক ইনিশিয়ালাইজার হিসাবে "বিবারক্লাস" ভাবুন - এটি স্ট্যাটিক ডেটা শুরু করার জন্য ব্যবহার করুন - এমন জিনিস যা আপনার পরীক্ষার ক্ষেত্রে জুড়ে না। আপনি স্থিতিশীল সংস্থানগুলি সম্পর্কে নিরাপদ থাকতে চান যা থ্রেড নিরাপদ নয়।

অবশেষে, "বিটারক্লাস" টীকাযুক্ত পদ্ধতিতে আপনার করা কোনও সেট আপ পরিষ্কার করার জন্য "আফটারক্লাস" টীকাযুক্ত পদ্ধতিটি ব্যবহার করুন (যদি না তাদের স্ব-ক্ষতি যথেষ্ট ভাল না হয়)।

"এর আগে" এবং "পরে" ইউনিট পরীক্ষা নির্দিষ্ট সূচনা করার জন্য। আমি সাধারণত আমার নির্ভরতাগুলির মকগুলি শুরু / পুনরায় সূচনা করতে এই পদ্ধতিগুলি ব্যবহার করি। স্পষ্টতই, এই সূচনাটি ইউনিট পরীক্ষার জন্য নির্দিষ্ট নয়, তবে সমস্ত ইউনিট পরীক্ষার জন্য সাধারণ to


বিটিডাব্লু যদি আপনি ইউনিট পরীক্ষা লিখতে শুরু করেন তবে আমি আমার ব্লগ থেকে এই পাত্রটি সুপারিশ করব। এটি ইউনিট টেস্টিংয়ের অন্যান্য দুর্দান্ত সামগ্রীর দিকেও ইঙ্গিত দেয়
লাবেল

7

নির্ধারণকারীর ঠিক পরে কোনও পদ্ধতি প্রয়োগের আগে সেটআপবোরক্লাস চালানো হয় (কেবল একবার চালানো হবে)

প্রতিটি পদ্ধতি কার্যকর করার আগে সেটআপ চালানো হয়

টিয়ারডাউন প্রতিটি পদ্ধতি কার্যকর করার পরে চালানো হয়

টিয়ারডাউনএফটারক্লাসটি অন্য সমস্ত পদ্ধতি কার্যকর করার পরে চালানো হয়, এটি কার্যকর করার শেষ পদ্ধতি। (শুধুমাত্র একবার ডিকনস্ট্রাক্টর চালান)


5

জাভাডোক থেকে :

কখনও কখনও কয়েকটি পরীক্ষার গণ্য ব্যয়বহুল সেটআপ ভাগ করা প্রয়োজন (যেমন একটি ডাটাবেসে লগইন করা)। যদিও এটি পরীক্ষার স্বাধীনতার সাথে আপোস করতে পারে, কখনও কখনও এটি প্রয়োজনীয় অপ্টিমাইজেশন হয়। কোনও public static voidনো-আরগ পদ্ধতিটি সহ এনটোট করা @BeforeClassক্লাসে যে কোনও পরীক্ষার পদ্ধতির আগে এটি একবার চালানো হয়। সুপার @BeforeClassক্লাসের পদ্ধতিগুলি বর্তমান বর্গের আগে চালানো হবে।


পার্থক্য হ'ল সেটআপআপফ্রান্সক্লাস যে কোনও পরীক্ষার আগে চালিত হয় এবং একবার চালানো হয়; সেটআপ প্রতিটি পরীক্ষার আগে একবার চালানো হয় (এবং সাধারণত পরীক্ষার মধ্যে একটি ভাল-মান হিসাবে টেস্টিং রাষ্ট্রটি পুনরায় সেট করতে ব্যবহৃত হয়)।
সিনট্যাক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.