[英]How to get Code Coverage in AOSP Java and Robolectric with Android.mk
我正在 AOSP 中編寫應用程序。 我需要為此應用程序進行單元測試。 為此,我使用了 robolectric。 應用程序和測試使用 make (Android.mk) 編譯。 我需要一份代碼覆蓋率報告,但不知道如何獲得。 我只找到了使用 gradle 的解決方案,我們在項目中沒有使用它。
有人知道如何獲得代碼覆蓋率的解決方案嗎?
public class Example extends Service
{
@Override
public void onCreate() {
Log.d("Example"," onCreate");
}
public boolean foo(){
Log.d("Example"," foo");
return true;
}
@Override
public IBinder onBind(Intent intent) {
return new ExampleBinder();
}
public class ExampleBinder extends Binder {
// Returns service object
public Example getService() {
return Example.this;
}
}
}
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := RoboTestExampleImpl
LOCAL_MODULE := RoboTestExampleImpl
LOCAL_MODULE_TAGS := tests
LOCAL_JACK_ENABLED := disabled
LOCAL_SRC_FILES := $(call all-java-files-under, java)
LOCAL_COMPATIBILITY_SUITE := e-tests
LOCAL_INSTRUMENTATION_FOR := RoboTestExample
include $(BUILD_STATIC_JAVA_LIBRARY)
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {ShadowBinder.class, manifest=Config.NONE)
public class ExampleRoboTest {
private static final String TAG = "ExampleRoboTest";
private ServiceController<Example> controller;
Example service;
@Before
public void setUp() {
controller = Robolectric.buildService(Example.class);
service = controller.create().get();
}
@After
public void tearDown() {
}
@Test
public void foo()
{
assertTrue(service.foo());
}
}
#############################################
# RoboExample Robolectric test target. #
#############################################
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := RoboTestExampleTest
LOCAL_MODULE := RoboTestExampleTest
LOCAL_MODULE_TAGS := tests
LOCAL_JACK_ENABLED := disabled
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_SRC_FILES := \
$(call all-java-files-under, src) \
LOCAL_JAVA_LIBRARIES := \
robolectric_android-all-stub \
Robolectric_all-target \
LOCAL_STATIC_JAVA_LIBRARIES := \
jacocoagent \
LOCAL_COMPATIBILITY_SUITE := e-tests
LOCAL_INSTRUMENTATION_FOR := RoboTestExample
include $(BUILD_STATIC_JAVA_LIBRARY)
#############################################################
# runner target to run the previous target. #
#############################################################
include $(CLEAR_VARS)
LOCAL_MODULE := RunRoboTestExampleTest
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_JAVA_LIBRARIES := \
RoboTestExampleTest\
robolectric_android-all-stub \
Robolectric_all-target \
LOCAL_TEST_PACKAGE := RoboTestExample
LOCAL_INSTRUMENT_SOURCE_DIRS := $(dir $(LOCAL_PATH))../main/java
LOCAL_ROBOTEST_TIMEOUT := 36000
include external/robolectric-shadows/run_robotests.mk
$ mma RunRoboTestExampleTest-jacoco
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.