From 626a21b0bf8e1840fa2308ac7cc009f00484e1e7 Mon Sep 17 00:00:00 2001 From: Matthew Fritze Date: Wed, 17 Aug 2016 11:52:39 -0700 Subject: [PATCH] Add Robolectric makefile and modify Settings Manifest for testing. Bug: 30918570 Change-Id: I4ae998676757b4985833fac5ba05d7685e29a8a8 --- AndroidManifest.xml | 4 +- tests/robotests/Android.mk | 45 ++++++++++++++ .../src/com/android/settings/TestConfig.java | 25 ++++++++ .../datausage/DataUsageSummaryTest.java | 60 +++++++++++++++++++ 4 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 tests/robotests/Android.mk create mode 100644 tests/robotests/src/com/android/settings/TestConfig.java create mode 100644 tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index ac8954dcd32..8efc9e41000 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -156,7 +156,7 @@ - + @@ -2200,7 +2200,7 @@ android:value="com.android.settings.TestingSettings" /> - + diff --git a/tests/robotests/Android.mk b/tests/robotests/Android.mk new file mode 100644 index 00000000000..fd62b7d6a14 --- /dev/null +++ b/tests/robotests/Android.mk @@ -0,0 +1,45 @@ +############################################# +# Settings Robolectric test target. # +############################################# +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +# Include the testing libraries (JUnit4 + Robolectric libs). +LOCAL_STATIC_JAVA_LIBRARIES := \ + platform-system-robolectric + +LOCAL_JAVA_LIBRARIES := \ + junit4-target \ + platform-robolectric-prebuilt \ + sdk_v23 + +LOCAL_APK_LIBRARIES = Settings +LOCAL_MODULE := SettingsRoboTests + +# TODO: Remove when this target builds with checkbuild +LOCAL_DONT_CHECK_MODULE := true + +LOCAL_MODULE_TAGS := optional + +include $(BUILD_STATIC_JAVA_LIBRARY) + +############################################################# +# Settings runner target to run the previous target. # +############################################################# +include $(CLEAR_VARS) + +LOCAL_MODULE := RunSettingsRoboTests + +# TODO: Remove when this target builds with checkbuild +LOCAL_DONT_CHECK_MODULE := true + +LOCAL_SDK_VERSION := current + +LOCAL_STATIC_JAVA_LIBRARIES := \ + SettingsRoboTests + +LOCAL_TEST_PACKAGE := Settings + +include prebuilts/misc/common/robolectric/run_robotests.mk \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/TestConfig.java b/tests/robotests/src/com/android/settings/TestConfig.java new file mode 100644 index 00000000000..3b2d2e46d42 --- /dev/null +++ b/tests/robotests/src/com/android/settings/TestConfig.java @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.settings; + +/** + * Constants for Robolectric config + */ +public class TestConfig { + public static final int SDK_VERSION = 23; + public static final String MANIFEST_PATH = "packages/apps/Settings/AndroidManifest.xml"; +} diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java new file mode 100644 index 00000000000..5ed0746e5b4 --- /dev/null +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.settings.datausage; + +import android.content.Context; +import android.net.ConnectivityManager; +import com.android.settings.TestConfig; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowApplication; + +import static junit.framework.Assert.assertTrue; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Mockito.when; + +@RunWith(RobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class DataUsageSummaryTest { + @Mock private ConnectivityManager mManager; + private Context mContext; + + /** + * This set up is contrived to get a passing test so that the build doesn't block without tests. + * These tests should be updated as code gets refactored to improve testability. + */ + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + ShadowApplication shadowContext = ShadowApplication.getInstance(); + shadowContext.setSystemService(Context.CONNECTIVITY_SERVICE, mManager); + mContext = shadowContext.getApplicationContext(); + when(mManager.isNetworkSupported(anyInt())).thenReturn(true); + } + + @Test + public void testMobileDataStatus() { + boolean hasMobileData = DataUsageSummary.hasMobileData(mContext); + assertTrue(hasMobileData); + } +}