DroidDriverなるものがあると知った

最近、AppiumのGitHub上でdroiddriverなるものを知りました。

https://github.com/appium/droiddriver

これ、どこから来ているのか気になっていたら、どうやらgooglesource上から来ている模様。

https://android.googlesource.com/platform/external/droiddriver

droiddriver_examplesを見てみたところ、このDroidDriverTestはActivityInstrumentationTestCase2を継承している模様。

ということは、ひとまずJUnit4の枠組みでも利用できますね。

BaseDroidDriverTest extends D2ActivityInstrumentationTestCase2 extends ActivityInstrumentationTestCase2

ここを見ると、どうやらDroidDriverはSDKとしてはAPI21が必要らしい。確かに、先ほどのGoogleのコードを追っても、4.4(KitKat)以降開発され、まだ正式なものとして出てはなさそう。ただ、手元でDroidDriverを継承したテストケースをconnectedAndroidTestで回すと、4.2.2の端末でも動作したので、OS自体はuiautomatorを提供するものになるのかな。

API18以上はuiautomator driverだし、17以下はinstrumentation driverだし。
これはuiautomatorを拡張したdriverなのかもしれないですね。

ちなみに、DroidDriverを使うには以下のようにclassSetUpをOverrideする必要があるみたい。

    @Override
    protected void classSetUp() {
        ActivityUtils.setRunningActivitySupplier(new ActivityUtils.Supplier<Activity>() {
            @Override
            public Activity get() {
                return getActivity();
            }
        });

        DroidDrivers.init(DroidDrivers.newDriver(getInstrumentation()));
    }

手元で軽くespresso向けのテストをDroidDriver使って動かしてみると動作しました。

先にあげたGitHubに記載されている例の中には、例えば以下のようなメソッドがあるので、DroidDriverはespressoの代替ではなく、uiautomatorをJUnitから操作する枠組みな気がしています。

UiElement find(Finder finder) {
        // Note that we use on to ensure refreshUiElementTree() is called
        // the 'find' method will not refresh the uielementtree
        return DroidDrivers.get().on(finder);
    }

ともあれ、少し追ってみようかな。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s