ارائه دهندگان محتوا را تست کنید

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

تست های یکپارچه سازی را برای ارائه دهندگان محتوا ایجاد کنید

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

برای آزمایش ارائه دهنده محتوای خود به صورت مجزا، از کلاس ProviderTestCase2 استفاده کنید. این کلاس به شما امکان می دهد از کلاس های شیء ساختگی اندروید مانند IsolatedContext و MockContentResolver برای دسترسی به اطلاعات فایل و پایگاه داده بدون تأثیر بر داده های واقعی کاربر استفاده کنید.

آزمون ادغام شما باید به عنوان یک کلاس تست JUnit 4 نوشته شود. برای کسب اطلاعات بیشتر در مورد ایجاد کلاس‌های آزمایشی JUnit 4 و استفاده از اظهارات JUnit 4، به ایجاد کلاس تست واحد محلی مراجعه کنید.

برای ایجاد یک تست یکپارچه سازی برای ارائه دهنده محتوای خود، باید این مراحل را انجام دهید:

  1. کلاس آزمایشی خود را به عنوان زیر کلاس ProviderTestCase2 ایجاد کنید.
  2. کلاس AndroidJUnitRunner را که AndroidX Test به عنوان اجرای آزمایشی پیش‌فرض شما ارائه می‌کند، مشخص کنید.
  3. شی Context را از کلاس ApplicationProvider تنظیم کنید. برای نمونه به قطعه زیر مراجعه کنید.

کاتلین


@Throws(Exception::class)
override fun setUp() {
  super.setUp()
  context = ApplicationProvider.getApplicationContext<Context>()
}

جاوا


@Override
protected void setUp() throws Exception {
  super.setUp();
  setContext(ApplicationProvider.getApplicationContext());
}

نحوه عملکرد ProviderTestCase2

شما ارائه دهنده ای را با زیر کلاس ProviderTestCase2 آزمایش می کنید. این کلاس پایه AndroidTestCase را گسترش می‌دهد، بنابراین چارچوب تست JUnit و همچنین روش‌های خاص اندروید را برای آزمایش مجوزهای برنامه ارائه می‌کند. مهمترین ویژگی این کلاس مقدار دهی اولیه آن است که محیط تست ایزوله را ایجاد می کند.

مقدار دهی اولیه

مقداردهی اولیه در سازنده ProviderTestCase2 انجام می شود که زیر کلاس ها سازنده های خود را فراخوانی می کنند. سازنده ProviderTestCase2 یک شی IsolatedContext ایجاد می کند که به عملیات فایل و پایگاه داده اجازه می دهد اما سایر تعاملات با سیستم Android را حذف می کند. خود عملیات فایل و پایگاه داده در یک دایرکتوری انجام می شود که محلی برای دستگاه یا شبیه ساز است و دارای یک پیشوند خاص است.

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

در نهایت، سازنده نمونه ای از ارائه دهنده تحت آزمایش ایجاد می کند. این یک شی ContentProvider معمولی است، اما تمام اطلاعات محیط خود را از IsolatedContext می گیرد، بنابراین به کار در محیط آزمایش ایزوله محدود می شود. تمام تست های انجام شده در کلاس test case بر روی این شی ایزوله اجرا می شود.

شما تست‌های یکپارچه‌سازی را برای ارائه‌دهندگان محتوا به همان روشی که تست‌های واحد ابزاردار اجرا می‌کنید، اجرا می‌کنید.

چه چیزی را تست کنیم

در اینجا چند دستورالعمل خاص برای آزمایش ارائه دهندگان محتوا آورده شده است.

  • تست با روش‌های حل‌کننده : حتی اگر می‌توانید یک شی ارائه‌دهنده را در ProviderTestCase2 نمونه‌سازی کنید، همیشه باید با استفاده از URI مناسب، با یک شیی حل‌کننده آزمایش کنید. انجام این کار تضمین می کند که با انجام همان تعاملی که یک برنامه معمولی از آن استفاده می کند، ارائه دهنده را آزمایش می کنید.
  • آزمایش یک ارائه‌دهنده عمومی به‌عنوان قرارداد : اگر می‌خواهید ارائه‌دهنده شما عمومی و در دسترس سایر برنامه‌ها باشد، باید آن را به عنوان قرارداد آزمایش کنید. چند نمونه از نحوه انجام این کار به شرح زیر است:
    • با ثابت هایی که ارائه دهنده شما به طور عمومی افشا می کند آزمایش کنید. به عنوان مثال، به دنبال ثابت هایی باشید که به نام ستون ها در یکی از جداول داده ارائه دهنده اشاره می کنند. اینها همیشه باید ثابت هایی باشند که به صورت عمومی توسط ارائه دهنده تعریف شده اند.
    • همه URI هایی را که ارائه دهنده شما ارائه می دهد آزمایش کنید. ارائه دهنده شما ممکن است چندین URI ارائه دهد که هر یک به جنبه متفاوتی از داده ها اشاره دارد.
    • URI های نامعتبر را آزمایش کنید. تست‌های واحد شما باید عمداً با ارائه‌دهنده‌ای با URI نامعتبر تماس بگیرد و به دنبال خطا باشد. یک طراحی ارائه دهنده خوب این است که یک IllegalArgumentException برای URI های نامعتبر ایجاد کند.
  • تعاملات ارائه دهنده استاندارد را آزمایش کنید : اکثر ارائه دهندگان شش روش دسترسی را ارائه می دهند: query() , insert() , delete() , update() , getType() و onCreate() . آزمایشات شما باید تأیید کند که همه این روش ها کار می کنند.
  • تست منطق کسب و کار : اگر ارائه دهنده محتوا منطق کسب و کار را پیاده سازی می کند، باید آن را آزمایش کنید. منطق تجاری شامل مدیریت مقادیر نامعتبر، محاسبات مالی یا حسابی، حذف یا ترکیب موارد تکراری است.