زنگ.

کسانی هستند که این خبر را قبل از شما خوانده اند.
مشترک شدن برای دریافت مقالات تازه.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید
بدون هرزنامه

در جستجوی وظایف آزمون برای برنامه نویسان جاوا بر روی یک سایت کنجکاو شد (کاربران Avast راه رفتن، اسکریپت Troyan تعیین می شود، بقیه ظاهرا می تواند باشد) - http://www.betterprogrammer.com. این مدارک تحصیلی برنامه نویسان جاوا را ساده ترین، اما روش اتوماتیک بررسی می کند: ارائه به نوشتن چندین توابع (روش ها) از افزایش پیچیدگی و کپی کردن کد در Textarea. بعد، سایت سایت چیزی را با وظایف انجام می دهد (در غیر این صورت به عنوان یک آزمون واحد)، معیارهای "کیفیت سرعت"، یک شاخص صلاحیت خاص و مسائل برآورد نهایی را در این فرم محاسبه می کند:

سوالات بیشتر شروع می شود من خودم را در جاوا برای دومین بار در زندگی ام برنامه ریزی می کنم (و بنابراین وظایف دشوار فقط Pry)، بنابراین 82٪ از این آزمون به سطح مربوط می شود برنامه نویس غیر جاوا. چقدر پس از آن باید Java Junior، برنامه نویس جاوا و به ویژه جاوا ارشد؟! نتیجه از انتظار چیست؟ حاضر برنامه نویس جاوا - 90، 95، 99؟ و در نهایت، چگونه می توان گفت که "برنامه نویس" کمتر از 82 به دست می آید، اما با این حال ادعا می کند به برخی از کار؟!

جاوا یک زبان برنامه نویسی مبتنی بر شی گرا است که توسط Sun Microsystems در سال 1991 توسعه یافته است. در ابتدا، زبان بلوط نامیده شد و برای برنامه ریزی الکترونیک مصرف کننده در نظر گرفته شد، اما بعدا به جای جاوا تغییر نام یافت. انتشار رسمی جاوا در سال 1995 بسیار موفق بود و به زودی پس از آن زبان جاوا موقعیت های قوی را به عنوان یک ابزار برای توسعه برنامه های سرور رتبه بندی کرد.

امروزه جاوا در تمام زمینه های توسعه نرم افزار استفاده می کند - برنامه های کاربردی سرور، برنامه های دسکتاپ، ابزار، برنامه های کاربردی وب - این همه با استفاده از جاوا و فن آوری های مرتبط توسعه یافته است.

هدف مخاطبان آزمون جاوا

آزمون جاوا شامل سوالات است، پاسخ هایی که اکثر توسعه دهندگان با حداقل تجربه برنامه نویسی در جاوا می دانند. تست برای بسیاری مفید خواهد بود، از جمله افرادی که تجربه بیشتری را با جاوا ندارند و می خواهند حداقل ایده ای از مفاهیم اساسی این زبان برنامه نویسی محبوب را دریافت کنند. همچنین، این آزمون می تواند برای دانش آموزان یادگیری جاوا برای تثبیت دانش به دست آمده در دانشگاه-AH یا به عنوان یک نتیجه از کار مستقل مفید باشد.

پیش نیازهای آزمون جاوا

قابل درک است که قبل از گذراندن آزمون بر اساس اصول جاوا، شما قبلا مفهوم اساسی مانند "متغیر"، "چرخه"، "روش" را می دانید و نحو ساختارهای اصلی زبان را می دانید. اگر این چنین نیست، توصیه می کنیم ابتدا با خواندن دوره مقدماتی، ابتدا با اصول اولیه جاوا آشنا شوید.

ساختار خمیر جاوا

تست "جاوا - مبانی" موضوعات زیر را روشن می کند:

بیشتر بخوانید در مورد موضوع سوالات آزمون، شما می توانید زیر را بخوانید:

  • اشیاء و کلاس ها: این موضوعات چنین مفاهیمی را به عنوان یک کلاس، یک نمونه کلاس (شی)، طراحان، روش ها و زمینه های کلاس پوشش می دهد.
  • نحو: این بخش دانش کلمات کلیدی زبان، اپراتورها، انواع اصلی (اولیه، رشته) را بررسی می کند، ساختارهای کنترل (اگر دیگر، در حالی که برای)، و همچنین درک از پردازش شرایط استثنایی (استثنا) .
  • دیگر: این بخش شامل مسائل مربوط به مفاهیم اساسی، شرایط و اختصارات، کنوانسیون های کلاس های نامگذاری، متغیرها و روش ها است. همچنین این بخش سوالاتی را در مورد فایل ها (.java، .class، .jar) و بسته ها مورد بحث قرار می دهد چرخه حیاتی اشیاء، جمع آوری زباله.

گذر از آزمون آنلاین جاوا به شما کمک می کند تا دانش اصول اولیه جاوا را بررسی و تحکیم کنید، و همچنین شما را به گذشت آزمون های پیچیده تر از بخش تست جاوا به ارمغان می آورد.

ما امیدواریم که این آزمون برای شما مفید باشد و سرگرم کننده باشد.

توسعه بیشتر آزمون جاوا

آزمون جاوا به طور مداوم با سوالات جدید به روز می شود.

در نزدیکترین برنامه های تیم، Quizful - ایجاد تست های سطح کارشناس در جاوا. شما هنوز هم ممکن است توسط آزمون Puzzlers جاوا ایجاد شود، اما متأسفانه آن را به آرامی با سوالات پر شده است.

اگر هیچ نظری درباره سوالات آزمون ندارید، مطمئن شوید که به ما بنویسید. موفق باشید.

تست دور از همیشه سرگرم کننده و جالب است. این فرآیند معمولا به اندازه کافی طولانی و گاهی اوقات پر از کار یکنواخت است. به نظر می رسد که اخیرا برنامه نویسان از خروجی استاندارد یا یک اشکال زدایی برای آزمایش کلاسهای جاوا استفاده کردند.

در این مقاله، من کتابخانه Junit 4 را توصیف خواهم کرد، که عمدتا روند تست نوشتن را ساده و خودکار می کند.

برای نشان دادن امکانات اصلی چارچوب Junit، یک کلاس ابتدایی را در زبان جاوا بنویسید و ما آن را فریب خواهیم داد. این کلاس دو روش دارد - پیدا کردن فاکتوریل یک عدد غیر منفی و مجموع دو عدد. علاوه بر این، یک روش تماس متناظر در یک نمونه از کلاس خواهد بود.

کلاس عمومی MathFunc (تماس های بین المللی، Getcalls عمومی Getcalls () (تماس های بازگشت؛) فاکتوریل عمومی عمومی (شماره INT) (تماس ++؛ اگر (شماره 1) (برای (INT I \u003d 1؛ I

در حال حاضر تست های واحد را بنویسید. برای انجام این کار، یک کلاس با تعداد مشخصی از روش های آزمون ایجاد کنید. به طور طبیعی، کلاس ممکن است شامل روش های کمکی معمولی باشد. به طوری که تست های دونده می توانند تعیین کنند که چه کسی است، روش های آزمون باید با AnntomentTest مشخص شود.

حاشیه نویسی ممکن است توسط چنین پارامترها تحت تاثیر قرار گیرد:

  • انتظار می رود - نشان دهید که استثناء توسط روش تولید می شود (نگاه کنید به مثال زیر)؛
  • timeout - پس از چه زمانی در miliseconds برای متوقف کردن انجام آزمون و شمارش آن را به عنوان ناموفق.

اگر می خواهید مشخص کنید که یک آزمون خاص برای جست و خیز ضروری است، سپس آن را علامت گذاری کنید و آن را علامت گذاری کنید. اگر چه شما می توانید به سادگی حذف @ test حاشیه نویسی.

این اتفاق می افتد که برای انجام هر سناریو تست، به عنوان مثال نیاز به برخی از زمینه ها، به عنوان مثال، در پیشبرد نمونه های ایجاد شده از کلاس ها. و پس از اعدام، شما باید منابع رزرو شده را آزاد کنید. در این مورد، شما نیاز به anntiation before و abter. روش مشخص شده قبل از هر مورد آزمون، قبل از هر مورد آزمون انجام می شود و روش Afterpter - پس از هر مورد آزمون.

اگر مقداردهی اولیه و انتشار منابع باید تنها یک بار انجام شود، به ترتیب قبل و بعد از همه آزمایش ها، سپس از چند حاشیه نویسی beforeclass و abterclass استفاده کنید.

و در اینجا کلاس تست با چندین سناریو تست است:

کلاس عمومی Mathfustest (Mathfunc Private MathFunc Math؛ Before Void Void Init () (Math \u003d New Mathfunc ()؛) After عمومی Void Teardown () (math \u003d null؛) @ test void void تماس () (AssTrequals (0، ریاضی .getcalls ())؛ math.Factoral (1)؛ متقاضیان (1، math.getcalls ())؛ math.Factoral (1)؛ اظهارات (2، math.getcalls ())؛) @ test عمومی void foid footalial () (asserttrue (math.Factoral (0) \u003d\u003d 1)؛ asserttrue (math.Factoral (1) \u003d\u003d 1)؛ asserttrue (math.Factoral (5) \u003d\u003d 120)؛)Test \u003d excepted \u003d lexaralargumxception.class) void void عمومی () (math.Factoral (-1)؛) @ EnglishTest عمومی void todo () (matherttrue (math.plus (1، 1) \u003d\u003d 3)؛)

روش تماس، صحت تماس با تماس را آزمایش می کند. روش فاکتوریل محاسبه فاکتوریل صحیح برای برخی از مقادیر استاندارد را بررسی می کند. روش فاکتورهای فاکتور بررسی می کند که غیرقانونی فاجعه برای مقادیر منفی Fachtication پرتاب خواهد شد. روش TODO نادیده گرفته خواهد شد. سعی کنید آن را حذف کنید حاشیه نویسی Englyore زمانی که شما با کد آزمایش می کنید.

روش AssertTrue بررسی می کند که آیا نتیجه بیان صحیح است یا خیر. برخی از روش های دیگر که ممکن است مفید باشند:

  • اظهارات - نتیجه مورد انتظار و نتیجه هماهنگ است؛
  • assertnull - نتیجه بیان null؛
  • assertnotnull - نتیجه بیان متفاوت از null است؛
  • asserTSame - انتظار می رود و اشیاء به دست آمده همان شی است.
  • شکست - این روش یک محرومیت از AssertionError ایجاد می کند - اضافه کردن جایی که اجرای برنامه نباید رسیده باشد.

در دنیای مدرن ما، IDE می تواند پیدا کند و به سادگی آزمایشات را در این پروژه اجرا کند. اما اگر میخواهید آنها را با استفاده از کد نرم افزار به صورت دستی اجرا کنید چه باید بکنید. برای انجام این کار، می توانید از دونده "اهم" استفاده کنید. متن وجود دارد - junit.textui.testrunner، نسخه های گرافیکی - junit.swingui.testrunner، junit.awtui.testrunner.

اما روش مدرن کمی بیشتر استفاده از کلاس Junitcore است. روش اصلی زیر را به کلاس Mathfestest اضافه کنید:

Public Static Void Main (String Args) استثنا را پرتاب می کند (Junitcore Runner \u003d New Junitcore ()؛ نتیجه نتیجه \u003d Runner.Run (MathFarctest.class)؛ System.Out.PrintLN ("آزمون های اجرا:" + نتیجه. GROUNTRONSOUNT ())؛ system.out.println ("آزمون های شکست خورده:" + نتیجه. grost.getfailurecount ())؛ system.out.println ("آزمایش های نادیده گرفته شده:" + نتیجه. grouteignorecount ())؛ system.out.println ("موفقیت:" + نتیجه .موفقیت آمیز بود ())؛)

و نتیجه اجرای:

تست اجرای: 3 تست های شکست خورده: 0 نادیده گرفته شده آزمون: 1 موفقیت: درست است

در بیشتر موارد نسخه های اولیه Junit برای نوشتن یک کلاس آزمون، لازم بود که یک وارث به Junit.Framework.testcase ایجاد شود. سپس لازم بود که طراح را که پارامتر رشته را قبول می کند، تعریف کنیم - نام روش - و انتقال آن به کلاس والدین. هر روش آزمون موظف بود با پیشوند آزمون شروع شود. راه اندازی و روش های TEDAROWN برای مقداردهی اولیه و منابع آزاد استفاده شد. به طور خلاصه، وحشت خوب، حالا همه چیز ساده است، بله

این همه امروز است من مطمئن هستم که چارچوب Junit تا حد زیادی به شما کمک خواهد کرد. نظرات و سوالات در مورد مقاله خوش آمدید.

junit - کتابخانه برای تست مدولار برنامه های جاوا. Junit ایجاد شده توسط کنت بک و اریک گاما، Junit متعلق به خانواده Xunit Framework برای زبان های برنامه نویسی مختلف است که در Sunit Kent Beck برای Smalltalk ساخته شده است. Junit اکوسیستم Extension Extension - JMOCK، EASYMOCK، DBUNIT، HTTPUNIT، و غیره

کتابخانه junit این به زبانهای دیگر، از جمله PHP (Phpunit)، C # (Nunit)، Python (Pyunit)، Fortran (Funit)، دلفی (Dunit)، Perl (FPCunit)، Perl (آزمون :: واحد)، C + منتقل شد + (CPPunit)، Flex (FlexUnit)، جاوا اسکریپت (JSunit).

junit - این یک چارچوب جاوا برای آزمایش است، I.E. تست بخش های فردی کد، به عنوان مثال، روش ها یا کلاس ها. تجربه زمانی که کار با Junit به دست آمده در توسعه مفاهیم تست نرم افزار بسیار مهم است.

مثال خمیر junit

واردات org.junit.test؛ واردات junit.framework.assert؛ کلاس عمومی Mathtest (Test Void Void Testoquals () (Assert.asserTequals (4، 2 + 2)؛ Assert.assertTrue (4 \u003d\u003d 2 + 2)؛)Test عمومی void testnotequals () (assert.assertfalse (5 \u003d \u003d 2 + 2)؛))

نیاز به استفاده از Junit

Junit به شما اجازه می دهد تا به سرعت اطمینان حاصل کنید که کار کد به سرعت است. اگر برنامه بسیار ساده نیست و شامل بسیاری از کلاس ها و روش ها است، ممکن است زمان قابل توجهی لازم باشد تا آن را بررسی کنید. به طور طبیعی، این روند بهتر است به طور خودکار. استفاده كردن junit به شما امکان می دهد کد برنامه را بدون تلاش قابل توجهی بررسی کنید و زمان زیادی را صرف نکنید.

تست Yunit کلاس ها و توابع نوعی اسناد و مدارک به آنچه انتظار می رود به عنوان یک نتیجه از اعدام آنها است. و نه فقط مستندات، و مستندات که می تواند به طور خودکار کد را برای انطباق با توابع بررسی کند. این راحت است و اغلب آزمایش ها هم با هم و قبل از فروش کلاس ها توسعه می یابد. توسعه از طریق تست یک تکنولوژی بسیار محبوب برای ایجاد نرم افزار جدی است.

انواع آزمایش و محل آزمایش Junit در طبقه بندی

آزمایش کردن نرم افزار می توان به دو نوع تقسیم کرد:

  • تست جعبه سیاه
  • تست کشویی سفید.

در طول آزمایش برنامه به عنوان یک جعبه سیاه، ساختار داخلی برنامه به محاسبه پذیرفته نمی شود. همه چیز مهم این است که کاربرد آن باید ارائه شود. هنگام آزمایش یک برنامه به عنوان یک جعبه سفید، یک ساختار داخلی به حساب می آید، I.E. کلاس و روش. علاوه بر این، تست را می توان به چهار سطح تقسیم کرد:

  • تست واحد - تست بخش های خاصی از کد؛
  • تست ادغام - تست تعامل و همکاری اجزاء؛
  • تست سیستم - تست کل سیستم به طور کلی؛
  • تست دریافت - تست نهایی سیستم به پایان رسید برای انطباق.

تست واحد بر اساس تعریف تست یک جعبه سفید است.

تست واحد مورد استفاده در دو گزینه - Junit 3 و Junit 4. هر دو نسخه را در نظر بگیرید، زیرا نسخه 3 هنوز در پروژه های قدیمی استفاده می شود که از جاوا 1.4 پشتیبانی می کند.

Junit 3

برای ایجاد یک آزمون، کلاس آزمون آزمایشی باید به ارث برده شود، در صورت لزوم، روش های راه اندازی و تخریب را نادیده بگیریم، در صورت لزوم، مهمترین چیز این است که روش های تست را توسعه دهیم که نام آن باید با "تست" بیکاری آغاز شود. هنگامی که آزمون شروع می شود، کلاس آزمون برای اولین بار (برای هر آزمون در کلاس، یک نمونه جداگانه از کلاس) ایجاد می شود، سپس روش راه اندازی در حال اجرا است، تست خود را آغاز می شود، و روش تداوون اجرا می شود. اگر هر یک از روش ها باعث استثنایی شود، آزمون شکست خورده است.

توجه: روش های آزمون باید خالی عمومی باشد، می تواند ایستا باشد.

تست ها شامل انجام برخی از کد ها و چک ها می شوند. چک ها اغلب با استفاده از کلاس انجام می شود ادعا کنید اگر چه گاهی از کلمه کلیدی ادعا استفاده می شود.

به عنوان مثال، ابزار را برای کار با ردیف ها، از جمله روش های چک کردن یک رشته خالی و نشان دادن توالی بایت به عنوان 16 رودخانه در نظر بگیرید:

کلاس عمومی Junit3Stringutilstest گسترش The Class The Class Tohexstringdata \u003d New Hashmap ()؛ حفاظت از تخلیه محافظت شده () استثنا (tohexstringdata.put ("، بایت جدید)؛ tohexstringdata.put (" 01020D112D7F "، بایت جدید (1،2، 13 ، 17،45،127))؛ tohexstringdata.put ("00FFF21180"، بایت جدید (0، -1، -14،17، -128))؛ // ...) حفاظت از تخلیه حفاظت شده () استثنا را پرتاب می کند (Tohexstringdata پاک کردن ()؛) TesttoHexString Void عمومی () (برای (iterator iterator \u003d tohexstringdata.kekeyset (). iterator ()؛ iterator.hasnext ()؛) (رشته نهایی انتظار می رود \u003d (رشته) iterator.next ()؛ نهایی BYTE TESTDATA \u003d (بایت) tohexstringdata.get؛ رشته نهایی واقعی \u003d stringutils.tohextring (testdata)؛ متقاضیان (انتظار، واقعی)؛) // ...)

ویژگی های اضافی، تست ها

Junit 3 چندین ویژگی های اضافی. به عنوان مثال، شما می توانید آزمایشات را گروه بندی کنید. برای انجام این کار، از کلاس استفاده کنید تست:

کلاس عمومی Junit3StringutilstestSuite گسترش Testuite (stringutilsjunit3test.class)؛ AddTestSuite (Osertest1.class)؛ AddTestSuite (OtherTest2.Class)؛))

شما می توانید تست آزمون چندین بار تکرار کنید. برای این، RepeTeDest استفاده می شود:

کلاس عمومی junit3stringutilsrepetedtest گسترش repeTedTest (Public junit3stringutilsrepetedtest (Super (Super (Super (Super (Super (Super (Super ()، 100)؛))

به ارث بردن کلاس آزمون از ExceptCase، شما می توانید کد را برای انتشار استثنا بررسی کنید:

کلاس عمومی Junit3StringutilsexceptionTest گسترش ExceptCase (SUPER (نام رشته نهایی) (نام، null pointexception.class)؛) Testtohexstring Void عمومی (Stringutils.tohexstring (null)؛))

همانطور که از نمونه ها دیده می شود، همه چیز کاملا ساده است و هیچ چیز اضافی نیست - حداقل کد برای آزمایش JUNIT.

junit 4

در Junit 4 پشتیبانی از ویژگی های جدید از جاوا 5.0 اضافه شده است؛ تست ها را می توان با استفاده از حاشیه نویسی اعلام کرد. در این مورد، سازگاری عقب مانده وجود دارد نسخه پیشین فریزر تقریبا تمام نمونه هایی که در بالا مورد بحث قرار گرفت، در Junit 4 کار خواهد کرد، به استثنای تکرار کننده، که در نسخه جدید موجود نیست.

چه تغییراتی در Junit 4 ظاهر شد؟ همان مثال را در نظر بگیرید، اما در حال حاضر با استفاده از فرصت های جدید:

کلاس عمومی Junit4Stringutilstest اعلام می کند (نقشه نهایی خصوصی Tohexstringdata \u003d Hashmap جدید ()؛ beforeptohexstringdata (tohexstringdata.put (""، بایت جدید)؛ tohexstringdata.put ("01020D112D7F"، بایت جدید (1،2،13،17،45،127))؛ tohexstringdata.put ("00FFF21180"، بایت جدید ( 0، -1، -14،17، -128))؛ // ...) After عمومی Void TearDownToHexStringdata () (Tohexstringdata.Clear ()؛) @ test void testtohexstring () (map.entry. ورود: tohexstringdata.entryset ()) (نهایی byte testdata \u003d entlement.getvalue ()؛ رشته نهایی انتظار می رود \u003d entlection.getkey ()؛ رشته نهایی واقعی \u003d stringutils.tohexstring (testdata)؛ treseTequals (انتظار، واقعی)؛))

چه چیزی در Junit 4 تغییر کرده است؟

  • برای ساده سازی کار، شما می توانید از کلاس به ارث برده اید ادعا کنیداگر چه این اختیاری است.
  • حاشیه نویسی @قبل از. روش هایی را که قبل از اجرای آزمایش ها ایجاد می شود، نشان می دهد. روشها باید باشند خالی عمومی. در اینجا معمولا ایستگاه از پیش تنظیم برای آزمون قرار می گیرد، در مورد ما این نسل از داده های آزمون است (روش setupthehexstringdata.).
  • شما می توانید از حاشیه نویسی استفاده کنید beforeclassکه به معنی روش هایی است که قبل از ایجاد یک نمونه از کلاس آزمون ایجاد می شود؛ روشها باید باشند استاتیک عمومی. این حاشیه نویسی (روش) برای آزمایش در مورد زمانی که کلاس شامل چندین آزمایش با استفاده از ایستگاه های از پیش تنظیم های مختلف استفاده می شود، منطقی است یا زمانی که چندین آزمایش از داده های مشابه استفاده می کنند تا زمان صرف وقت خود را برای هر آزمون صرف نکنید.
  • حاشیه نویسی @بعد از. روش هایی را که پس از آزمایش ایجاد می شود، نشان می دهد. روشها باید باشند خالی عمومی. در اینجا عملیات برای انتشار منابع پس از آزمون قرار می گیرند؛ در مورد ما، تمیز کردن داده های تست (روش tearDowtoHexstringdata.).
  • حاشیه نویسی @بعد از کلاس مرتبط با معنی beforeclassاما پس از آزمایش کلاس، روش ها را انجام می دهد. همانطور که در مورد beforeclass، روش ها باید باشند استاتیک عمومی.
  • حاشیه نویسی @تست روش های آزمون را نشان می دهد. همانطور که قبلا، این روش ها باید باشد خالی عمومی. در اینجا چک خودشان هستند. علاوه بر این، در این حاشیه نویسی، شما می توانید از دو پارامتر استفاده کنید.

نمونه هایی از استفاده از حاشیه نویسی با پارامترها، آزمون JUNIT:

test (extected \u003d nullpointerexception.class) void void عمومی (stringutils.tohexstring (null)؛) test (timeout \u003d 1000) Void infinity () (در حالی که (درست)؛)

نادیده گرفتن اجرای آزمون، Junit Ignore

اگر یکی از آزمایشات برای هر دلیل جدی باید غیر فعال شود، به عنوان مثال، یک آزمون به طور مداوم با یک خطا تکمیل شده است. اصلاح آزمون را می توان به یک حاشیه نویسی آینده روشن منتقل کرد @چشم پوشی.. اگر این حاشیه نویسی را به کلاس اضافه کنید، تمام آزمایشات این کلاس غیر فعال خواهد شد.

@ EngtiNoreTest (timeout \u003d 1000) عمومی بی نهایت () (در حالی که (درست)؛)

قوانین مزه، قانون JUNIT

junit به شما اجازه می دهد تا از قوانین تعریف شده توسط توسعه دهنده قبل و بعد از انجام آزمون استفاده کنید، که عملکرد را گسترش می دهد. به عنوان مثال، قوانین داخلی ساخته شده برای تنظیم زمان وقفه زمان وجود دارد، برای تنظیم استثناء مورد انتظار (انتظار می رود)، برای کار با temporaryfolder و دیگران.

برای اعلام قانون، باید ایجاد کنید عمومی نه استاتیک Methodrule نوع نوع مشتق شده و آن را با استفاده از یک کلمه کلیدی حاشیه نویسی کنید قانون.

کلاس عمومی Junitothertest (RULLEL Public FULDER FULDER FLEANDARFOLDER) \u003d جدید TEMEMETRARYFOLDER ()؛ RULULE PUBLIC TIMEOUT TIMEOUT TIMEOUT \u003d timeout جدید ) (در حالی که (درست)؛) test void void testfilewriting () iOException را پرتاب می کند ("debug.log")؛ FileWriter Logwriter FileWriter \u003d Firewriter جدید (ورود به سیستم)؛ logwriter.append ("سلام")؛ logwriter.append جهان !!! ")؛ logwriter.flush ()؛ logwriter.close ()؛) test void void testExpectedException () iOException (thrown.class) را پرتاب می کند؛ stringutils.tohexstring (null)؛))

مجموعه تست، Junit Suite، SuiteClasses

شروع آزمون می تواند توسط حاشیه نویسی پیکربندی شود @اجرا با. کلاس های تست که شامل روش های آزمون هستند، می توانید به مجموعه های تست (مجموعه) ادغام کنید. به عنوان مثال، دو کلاس تست شیء ایجاد شده است: testfilter، testconnect. این دو کلاس آزمون را می توان به یک تست کلاس تست ترکیب کرد. JAVA:

بسته com.Objects؛ واردات org.junit.runner.runwith؛ واردات org.junit.runners.Suite؛ runwith (suite.class) @ suite.suiteclasses ((testfilter.class، testconnect.class)) تست های عمومی کلاس های عمومی ()

برای تنظیم تست های آغاز شده، استفاده از suiteclasses استفاده می شود، که شامل کلاس های آزمون است.

دسته های حاشیه نویسی

حاشیه نویسی دسته بندی ها. به شما امکان می دهد تا تست ها را در رده (گروه ها) ترکیب کنید. برای انجام این کار، این گروه را تعیین می کند @دسته بندی.، پس از آن، دسته های آزمایشی فعال در مجموعه پیکربندی شده اند. این ممکن است به نظر برسد:

کلاس عمومی JunitStringutilscateestsiestest گسترش (// ... category (unit.class) test عمومی void testiosempty () (/ / ...) // ...) runwith (دسته بندی ها.class) @ categorys.includecategory واحد .class) @ suite.suiteclasses ((junitothertest.class، junitstringutilscateiest.class)) کلاس عمومی junittestsuite ()

حاشیه نویسی، Junit پارامتر

حاشیه نویسی پارامتر به شما امکان می دهد از آزمون های پارامتری استفاده کنید. برای انجام این کار، کلاس تست یک روش استاتیک اعلام می شود که لیستی از داده هایی را که به عنوان استدلال های طراح کلاس استفاده می شود، باز می گردد.

runwith (parameterized.class) کلاس عمومی JunitStringutilsParameterAnttest گسترش می دهد (Testdata نهایی خصوصی نهایی، انتظار می رود فینال خصوصی، انتظار می رود JunitstringutilsameterAntTest عمومی (Testdata نهایی نهایی، انتظار می رود Boolean) (the testdata \u003d testdata؛ بیضه عمومی () (نهایی بولین واقعی \u003d Stringutils.isempty (testdata)؛ متقاضیان (انتظار می رود، واقعی)؛) @ پارامترها isEmptyData () (array array.aslist بازگشت ((null، true)، ("، true)، (" "، false)، (" برخی از رشته ها "، false)،)؛))؛

پارامتر سازی روش: نظریه ها.class، datapoints، datapoint، نظریه

حاشیه نویسی نظریه ها پارامترها روش آزمون، نه طراح. داده ها با علامت گذاری شده اند datapoints و datapoint، روش تست - استفاده @تئوری.. تست که از این قابلیت استفاده می کند ممکن است چیزی شبیه به این باشد:

runwith (نظریه ها.class) کلاس عمومی JunitStringutilStheoryTest گسترش می دهد (datapoints عمومی استاتیک isemptydata \u003d شیء جدید ("، true)، (" "، false)، (" برخی از رشته ها "، false)،)؛ datapoint عمومی static object nulldata \u003d شیء جدید (null، true)؛ theyory void void testdata (نهایی boolean ital \u003d stringutils.isempty (((تراشه) testdata؛ esenttequals (testdata، واقعی)؛))

روش انجام آزمایشات

اگر شما نیاز به انجام یک آزمون را در یک نظم خاص دارید، می توانید از حاشیه نویسی fixmethoderder استفاده کنید (constools.name_ascending) در Junit 4.11 تعریف شده است. مثلا:

fixmethodorder (constzaSators.name_ascending) کلاس عمومی MyTest (test عمومی Void Test01 () (...) رتی عمومی Void Test02 () (...) ... test عمومی Void Test09 () (...) )

در غیر این صورت، شما می توانید از 2 رویکرد زیر استفاده کنید.

void test01 ()؛ void test02 ()؛ ... void test09 ()؛ test void void testorder1 (test1 () (test1 ()؛ test3 ()؛) @ test (extected \u003d exception.class) testorder void عمومی (test2)؛ test3 ()؛ test1 ()؛) test (انتظار می رود \u003d nullpointerexception.class) testorder void عمومی 3 () (test3 ()؛ test1 ()؛ test2 ()؛)

test void void testallolders () (برای (نمونه شیء: permute (1، 2، 3)) (برای (شاخص شیء: نمونه) .tvalue () (مورد 1: test1 ()؛ شکستن؛ مورد 2: test2 ( )؛ شکستن؛ مورد 3: test3 ()؛ شکستن؛))))

فهرست حاشیه نویسی های اساسی

حاشیه نویسیشرح
@تست
آزادی عمومی ()
روش آزمون است
test (timeout \u003d 100)
آزادی عمومی ()
اگر زمان اجرای بیش از پارامتر Timeout باشد، آزمون به طور ناموفق تکمیل خواهد شد
test (انتظار می رود \u003d myeException.Class)
آزادی عمومی ()
این روش باید استثنائات را به کلاس MyException پرتاب کند، در غیر این صورت آزمون ناموفق خواهد شد
@چشم پوشی.
آزادی عمومی ()
نادیده گرفتن روش آزمون
beforeclass
این روش قبل از انجام روش های آزمون یکبار برای یک کلاس نامیده می شود؛ در اینجا شما می توانید مقداردهی اولیه را انجام دهید تا فقط یک بار انجام شود، به عنوان مثال، داده ها را در روش های آزمون استفاده کنید یا یک اتصال به پایگاه داده ایجاد کنید
@بعد از کلاس
تست های تصدیق عمومی عمومی ()
این روش پس از انجام روش های آزمون یک بار برای یک کلاس نامیده می شود؛ در اینجا شما می توانید deinitialization قرار دهید که شما فقط نیاز به اجرای یک بار، برای مثال، برای بستن اتصال به پایگاه داده و یا حذف داده های دیگر مورد نیاز است.
@قبل از.
تصفیه عمومی عمومی Befaemethod ()
این روش به هر روش آزمون در کلاس آزمون منجر می شود؛ در اینجا شما می توانید مقداردهی اولیه لازم را انجام دهید، به عنوان مثال، پارامترهای اولیه را تنظیم کنید.
@بعد از.
AfterMethod ()
روش ناشی از هر روش آزمون در کلاس آزمون؛ در اینجا شما می توانید deinitialization لازم را انجام دهید، به عنوان مثال، حذف داده هایی که دیگر مورد نیاز نیست.

اظهارات چک را تایید می کند

نوع چکشرح
شکست ()
شکست (پیام رشته)
قطع خمیر با یک خطا، I.E. آزمون ناموفق خواهد بود
assertTrue (شرایط بولین)
AssertTrue (Java.Lang.String پیام، شرایط بولین)
تأیید وضعیت شرایط برابری ارزش واقعی
assertfalse (شرایط بولین)
assertfalse (پیام رشته، شرایط بولین)
تأیید ارزش وضعیت شرایط شرایط برابری نادرست است
esenttequals (<тип> انتظار می رود،<тип> واقعی)
اظهارات (پیام رشته،<тип> انتظار می رود،<тип> واقعی)
بررسی برابری؛<тип> - این شی، int، دو، و غیره است.
assertarrayequals (بایت انتظار می رود، بایت واقعی)
Assertarrayqualals (پیام رشته،<тип> انتظار می رود<тип> واقعیات)
بررسی آرایه ها در هر برابری؛ شبیه به متقاضیان؛<тип> - این شی، int، دو، و غیره است.
assertnotnull ( شی شی)
assertnotnull (پیام رشته، شی شی)
بررسی کنید که شی null نیست
assertnull (شی شی)
assertnull (پیام رشته، شی شی)
این شیء را بررسی کنید
asserTSame (شی مورد انتظار، شیء واقعی)
AsserTSame (پیام رشته، شی مورد انتظار، شیء واقعی)
بررسی برابری دو اشیاء انتظار می رود و واقعی، I.E. یک و همان جسم

مثال آزمایش JUNIT

برای نشان دادن امکانات اصلی Junit، ما از یک Funcmath کلاس ابتدایی استفاده می کنیم که دارای دو روش است - پیدا کردن فاکتوریل یک عدد غیر منفی و مجموع دو عدد. علاوه بر این، یک روش تماس متناظر در یک نمونه از کلاس خواهد بود.

Funcmath کلاس عمومی (تماس های int؛ عمومی int getcalls () (تماس های بازگشت؛) فاکتوریل عمومی عمومی (اگر شماره) (تماس ++؛ اگر (شماره< 0) throw new IllegalArgumentException(); long result = 1; if (number > 1) (برای (INT I \u003d 1؛ I< = number; i++) result = result * i; } return result; } public long plus(int num1, int num2) { calls++; return num1 + num2; } }

گاهی اوقات برخی از زمینه ها برای انجام هر سناریو تست، به عنوان مثال، نمونه های کلاس های پیش ساخته شده وجود دارد. و پس از اعدام، شما باید منابع رزرو شده را آزاد کنید. در این مورد، حاشیه نویسی Affore و After. روش مشخص شده قبل از هر مورد آزمون، قبل از هر مورد آزمون انجام می شود و روش Afterpter - پس از هر مورد آزمون. اگر مقداردهی اولیه و آزادی منابع باید تنها یک بار انجام شود، به ترتیب قبل و بعد از همه آزمایش ها، آنها از چند حاشیه نویسی استفاده از beforeclass و abterclass استفاده می کنند.

کلاس تست با چندین سناریو فرم زیر را دارد:

واردات org.junit.test؛ واردات org.junit.after؛ واردات org.junit.Before؛ واردات org.junit.assert؛ واردات org.junit.afterclass؛ واردات org.junit.beforeclass؛ کلاس عمومی junit_funcmath گسترش (Private Funcmath Math؛ Private Public Void init () (Math \u003d New Funcmath ()؛) After عمومی Void Teardown () (Math \u003d null؛)TEST Calls void عمومی () (AssTreatequals math.getcalls ()! \u003d 0 "، 0، dao.getconnection ())؛ math.Factoral (1)؛ متقاضیان (1، math.getcalls ())؛ math.Factoral (1)؛ متقاضیان (2، ریاضیات. getcalls ())؛) test void void factorial () (matherttrue (math.Factoral (0) \u003d\u003d 1)؛ asserttrue (math.Factoral (1) \u003d\u003d 1)؛ asserttrue (math.Factoral (5) \u003d\u003d 120)؛)Test (extected \u003d excled \u003d leusalargumentexception.class) void void عمومی () (math.Factoral (-1)؛) @ EnglishTest عمومی void todo () (matherttrue (math.plus (1، 1) \u003d\u003d 3)؛)

روش تماس، صحت تماس با تماس را آزمایش می کند. روش فاکتوریل محاسبه فاکتوریل صحیح برای برخی از مقادیر استاندارد را بررسی می کند. روش فاکتورهای فاکتور بررسی می کند که غیرقانونی فاجعه برای مقادیر منفی Fachtication پرتاب خواهد شد. روش TODO نادیده گرفته خواهد شد.

در نتیجه، لازم به ذکر است که این مقاله تمام امکانات استفاده از Junit را ارائه نمی دهد. اما همانطور که از نمونه های بالا دیده می شود، چارچوب بسیار آسان برای استفاده است، ویژگی های اضافی وجود دارد، اما امکان گسترش با استفاده از قوانین و شروع کنندگان وجود دارد.

من معتقدم که توسعه نرم افزار بیش از کار است. من خودم را یک صنایع دستی می بینم که سعی می کند هر روز بهتر شود. راه ساده ترین راه برای پیدا کردن برخی از ابزارهای خوب و پاسخ به سوالات زیر است:

  • چه زمانی باید از ابزار X استفاده کنم؟
  • چگونه باید از ابزار X استفاده کنم؟

تست خودکار بخش مهمی از توسعه نرم افزار است، اما در وبلاگ های برنامه نویسان چند پست در مورد ابزار مورد استفاده. همان مقاله به شما این امکان را می دهد که به "جعبه با ابزار" من نگاه کنید. من حدود 12 کتابخانه و چارچوب را که برای نوشتن واحد و تست ادغام استفاده می کنم صحبت خواهم کرد، و همچنین ارائه لینک به صفحاتی که به شما کمک می کند تا بدانید که چگونه از آنها استفاده کنید.

به جعبه من نگاه کنید

قبل از اینکه بتوانید از ابزارهایی که در زیر شرح داده شده استفاده کنید، باید یک مجمع را پیکربندی کنید که به طور خودکار شروع به ادغام و تست واحد می کند. من 2 یادداشت در این موضوع دارم:

  • تست ادغام با Maven توضیح می دهد که چگونه می توانیم مونتاژ Maven را با تست ادغام و واحد در دایرکتوری های مختلف پیکربندی کنیم.
  • شروع به کار با GrayLe: تست ادغام با افزونه Testets Plugin همان را برای Gradle توصیف می کند.

حالا شما آماده هستید تا به ابزارهای من نزدیک شوید. من آنها را به دسته تقسیم کردم تا بتوانید حرکت کنید.

بنابراین، در اینجا 12 ابزار است که من با استفاده از ادغام و تست واحد استفاده می کنم.

تست شروع

assertj یک API انعطاف پذیر را برای نوشتن اظهارات با پیام های خطای مفید فراهم می کند، قابلیت خواندن کد آزمون را بهبود می بخشد، به شما امکان می دهد تا تست ها را به مشخصات اجرایی تبدیل کنید که به زبان مورد نظر مورد نظر احترام می گذارند.

علاوه بر این:

  • با استفاده از Hamcrest در آزمایش، نحوه استفاده از Hamcrest را برای نوشتن تست ها، و همچنین نحوه گسترش قابلیت های آن با استفاده از ماژول های سفارشی می گوید.
  • ما به یک زبان شی گرا تبدیل می شویم به چگونگی ایجاد اظهارات سفارشی در Assertj می گوید.
  • ما تست های تمیز را بنویسیم: جایگزینی اتهامات زبان مورد نظر. او می گوید که چرا ما باید اظهارات استاندارد Junit را با خودمان جایگزین کنیم، که از زبان عینی ایمان استفاده می کند.

تست کد دسترسی به داده ها

پایگاه داده سریع، مفید برای نوشتن تست های ادغام که بر روی دستگاه توسعه دهنده محلی اجرا می شود.

فرمت برای Junit، که می تواند مورد استفاده قرار گیرد برای راه اندازی پایگاه داده به یک حالت خاص قبل از انجام هر یک از تست ادغام و پر کردن پایگاه داده با داده های لازم. dbunit نقاط ضعف خود را دارد، اما خیلی زیاد است ابزار مفیداجازه می دهد تا داده های آزمون و کد تست را تقسیم کنید.

علاوه بر این:

  • اجزای کلیدی DBUnit را توصیف می کند، دانش لازم برای نوشتن تست ها با استفاده از DBUnit است.
  • پنج قانون املا را برای بهترین آزمایشات برای کد دسترسی به داده ها فراهم می کند.

زنگ.

کسانی هستند که این خبر را قبل از شما خوانده اند.
مشترک شدن برای دریافت مقالات تازه.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید
بدون هرزنامه