مشخصات مقاله
-
1650
-
0.0
-
3095
-
0
-
0
نوشتن تست نرم افزاری برای اپلیکیشن با فریم ورک AssertJ
مقدمه ای بر AssertJ
AssertJ نیز یک کتابخانه اجرای تست نرم افزاری همچون Hamcrest است که با ارائه ی تعداد زیاری دستور assert و interface کارا به توسعه دهنده این اجازه را می دهد تا تست های نگهداشت پذیر و کارامد برای پروژه ی اندرویدی خود بنویسند. در واقع AssertJ یک شاخه از کتابخانه ای از دستورات assert به نام Fest است که امروزه دیگر به صورت حرفه ای پشتیبانی نمی شود.
کتابخانه ی مزبور بیشتر جهت آسان سازی نوشتن دستورات assert در تست های نرم افزاری و بهبود خوانایی آن ها تعبیه شد. این کتابخانه با برخورداری از interface کارامد، به توسعه دهنده امکان می دهد تا دستورات assert را به صورت کارا و روان (پشت سرهم) جهت تست بخش های نرم افزار بنویسد.
متد پایه و اصلی کتابخانه ی نام برده assertThat بوده و دستورات مربوط به assert (بررسی صحت اجرای دستور و برآورده شدن انتظارات) بلافاصله پس از این متد درج می شوند.
استفاده ی کاربردی از AssertJ
Gradle
جهت استفاده از AssertJ همراه با سیستم کامپایل Gradle در پروژه، لازم است کتابخانه (dependency) زیر را به فایل Gradle اضافه نمایید.
testCompile 'org.assertj:assertj-core:2.0.0'
Maven
به منظور استفاده از کتابخانه ی مورد نظر در پروژه ای که با سیستم Maven کامپایل می شود، کافی است dependency (کتابخانه ی) زیر را به فایل pom خود اضافه نمایید.
org.assertj assertj-core 2.0.0 test
تنظیمات مرتبط با محیط کاری Eclipse
جهت استفاده از متد assertThat از کتابخانه ی AssertJ، پس از طی کردن مسیر رو به رو: Window ▸ Preferences ▸ Java ▸ Editor ▸ Content assist ▸ Favorites ▸ New Type ، دستور org.assertj.core.api.Assertions را درج نمایید.
پس از درج دستور فوق بایستی عبارت org.assertj.core.api.Assertions.* را در کد مشاهده نمایید.
تنظیمات مرتبط با محیط کاری IntelliJ
برای استفاده از محیط برنامه نویسی IntelliJ نیاز به تنظیمات خاصی نیست. کافی است واژه ی assertThat را تایپ نموده و سپس با فشردن کلیدهای (Ctrl-Space)، قابلیت تکمیل خودکار کد (code completion) محیط کاری میزبان را دو بار فراخوانی نمایید.
مثالی کاربردی ازAssertJنمونه کد زیر از صفحه ی اصلی سایت AssertJ اقتباس شده است.
// unique entry point to get access to all assertThat methods and utility methods (e.g. entry)
import static org.assertj.core.api.Assertions.*;
// common assertions
assertThat(frodo.getName()).isEqualTo("Frodo");
assertThat(frodo).isNotEqualTo(sauron)
.isIn(fellowshipOfTheRing);
// String specific assertions
assertThat(frodo.getName()).startsWith("Fro")
.endsWith("do")
.isEqualToIgnoringCase("frodo");
// collection specific assertions
assertThat(fellowshipOfTheRing).hasSize(9)
.contains(frodo, sam)
.doesNotContain(sauron);
// using extracting magical feature to check fellowshipOfTheRing characters name :)
assertThat(fellowshipOfTheRing)
.extracting("name")
.contains("Boromir", "Gandalf", "Frodo", "Legolas")
.doesNotContain("Sauron", "Elrond");
// map specific assertions, ringBearers initialized with the elves rings and the one ring bearers.
assertThat(ringBearers).hasSize(4)
.contains(entry(oneRing, frodo), entry(nenya, galadriel))
.doesNotContainEntry(oneRing, aragorn);
// and many more assertions : dates, file, numbers, exceptions ...