首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Android.mk在AOSP Java和Robolectric中获得代码覆盖率

如何使用Android.mk在AOSP Java和Robolectric中获得代码覆盖率
EN

Stack Overflow用户
提问于 2019-09-04 17:42:48
回答 1查看 827关注 0票数 1

我正在用AOSP编写一个应用程序。我需要为这个应用程序做一个单元测试。为此,我使用了robolectric。该应用程序和测试是使用make (Android.mk)编译的。我需要一份代码覆盖率报告,但我不知道如何获得它。我只找到了使用gradle的解决方案,我们在项目中没有使用它。

有没有人知道如何获得代码覆盖率的解决方案?

代码语言:javascript
运行
复制
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;
      }
    }
}
代码语言:javascript
运行
复制
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)
代码语言:javascript
运行
复制
@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());
    }

}
代码语言:javascript
运行
复制
#############################################
# 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-16 04:24:32

代码语言:javascript
运行
复制
$ mma RunRoboTestExampleTest-jacoco
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57785695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档