Robolectric با Gradle یا Bazel بهتر کار میکند. اگر شما یک پروژه جدید شروع کردهاید، اول Gradle را توصیه میکنیم(از آنجایی که Gradle همان Build System انتخابی در Android Studio است) و دوم Bazel را. هر دو محیط پشتیبانی First Class برای Robolectric را ارائه میدهند. اگر از Build System دیگری استفاده میکنید، ببینید محیطهای دیگر چگونه پیکربندی میشوند و یا چگونگی فراهم کردن پشتیبانی First Class Build System Integration برای محیطهای دیگر را یاد بگیرید(طی جلسات آتی هم موضوع محیطها دیگر و هم Build System Integration ارائه خواهند شد).
Building(ساخت) با Android Studio/Gradle
Robolectric با Android Studio و Android Gradle Plugin 3.2.1 یا جدیدتر بهتر کار میکند.
قسمت زیر را به ‘build.gradle’ خود بیفزایید:
android { testOptions { unitTests { includeAndroidResources = true } } } dependencies { testImplementation 'org.robolectric:robolectric:4.0.2' }
این خط را به ‘gradle.properties’ اضافه کنید(دیگر به +Android Studio 3.3 نیاز نیست):
android.enableUnitTestBinaryResources=true
تست خود را با Robolectric test runner حاشیهنویس(Annote) کنید:
@RunWith(RobolectricTestRunner.class) public class SandwichTest { }
ساخت با Bazel
Robolectric با Bazel 0.10.0 یا بالاتر کار میکند. Bazel از طریق android_local_test’ rule’ با Robolectric یکپارچه یا Integrate میشود. Robolectric Java test code(کد تست جاوایی Robolectric) برای یک پروژه Bazel مانند یک پروژه جدید Gradle است.
Robolectic نیاز دارد به عنوان یک Dependency به پروژه Bazel شما اضافه شود. قسمت پایین را به Workspace File خود بیفزایید:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "robolectric", urls = ["https://github.com/robolectric/robolectric-bazel/archive/4.0.1.tar.gz"], strip_prefix = "robolectric-bazel-4.0.1", sha256 = "dff7a1f8e7bd8dc737f20b6bbfaf78d8b5851debe6a074757f75041029f0c43b", ) load("@robolectric//bazel:setup_robolectric.bzl", "robolectric_repositories") robolectric_repositories()
android_local_test rule را به Build File خود بیفزایید:
android_local_test( name = "MyTest", srcs = ["MyTest.java"], manifest = "TestManifest.xml", deps = [ ":sample_test_lib", "@robolectric//bazel:robolectric", ], ) android_library( name = "sample_test_lib", srcs = ["Lib.java"], resource_files = glob(["res/**"]), manifest = "AndroidManifest.xml", )
محیطهای دیگر
- Buck
- نسخههای Android Studio/Gradle قدیمیتر
- Maven و Eclips
پروژههای نمونه
به نمونههای Robolectric نگاه کنید تا ببینید که چقدر سریع و آسان میتواند برای توسعه برنامههای آندروید “تست محور” باشد. علاوه بر این، پروژههای Starter از Maven و یا Gradle را Check out کنید.
تمام قسمتهای آموزش Robolectric، به صورت دستهبندی شده از اینجا نیز در دسترس است.