簡體   English   中英

如何使用 Android.mk 在 AOSP Java 和 Robolectric 中獲得代碼覆蓋率

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM