android,如何查找哪些代码行不算作代码覆盖率

问题描述

只需向android项目添加一个简单的类,该类只有一个方法一个构造函数。并为其添加了测试。但是它说覆盖率不是100%。 有谁知道如何找出未覆盖代码行的地方?

该类仅用于在调试版本中使用第三方库,并且该依赖项仅在调试时存在。这是添加的类,CommonInterface可用于调试和发布。用于调试和发布的OptionaObjImpl不同,只是在调试中具有第三方库。

public interface CommonInterface {
    @Nullable
    JSONObject getoptionObj(Context context);
}

for debug:
public class OptionaObjImpl implements CommonInterface {
    private JSONObject jsonObj = null;
    public OptionaObjImpl(){}
    @Nullable
    @Override
    public JSONObject getoptionObj(Context context) {
        if (jsonObj == null) {
            jsonObj = new ThirdPartLib.generateJson(context);
        }
        return jsonObj;
    }
}

for release
public class OptionaObjImpl implements CommonInterface {
    public OptionaObjImpl() {}
    @Nullable
    @Override
    public JSONObject getoptionObj(Context context) {
        return null;
    }
}

测试是:

@RunWith(RobolectricTestRunner.class)
public class OptionalDependenciesTest extends BaseTest{

    @Test
    public void testConstructors() {
        ReflectionHelpers.callConstructor(OptionaObjImpl.class);
    }

    @Test
    public void constructor_test2() throws Exception {
        Class<OptionaObjImpl> optionaObjImpllClass = OptionaObjImpl.class;
        Constructor<?> constructor = optionaObjImpllClass.getDeclaredConstructor();
        constructor.setAccessible(true); 
        Assert.assertNotNull(constructor.newInstance()); 
    }

    @Test
    public void optionaObjImpl_ShouldHaveRightJsonObject() throws Exception {
        CommonInterface optionalObjGetter = new OptionaObjImpl();
        assertNotNull(optionalObjGetter);
        JSONObject jsonObj = optionalObjGetter.getoptionObj(application);
        if (jsonObj != null) {
            assertTrue(jsonObj instanceof JSONObject);
        } else {
            assertTrue(jsonObj == null);
        }

        JSONObject jsonObj2 = optionalObjGetter.getoptionObj(application;
        if (jsonObj2 != null) {
            assertEquals(jsonObj,jsonObj2);
        } else {
            assertTrue(jsonObj2 == null);
        }
    }
}

感觉测试应该涵盖了方法和构造函数。谁知道从哪里可以找到未覆盖的代码行?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)