Android Studio 3.0 gradle 3.0.0-beta2, breaks Kotlin Unit Test Coverage?

旧时模样 提交于 2019-12-03 19:25:05

问题


I have a simple Kotlin classes, as below

class MyClass {
    fun justSayHello(yes: Boolean): String {
        if (yes) {
            return "Hello"
        } else {
            return "Sorry"
        }
    }
}

I have my test (written in Java here, could be in Kotlin, also)

public class MyClassTest {
    private MyClass myClass = new MyClass();

    @Test
    public void testFirst() {
        myClass.justSayHello(true);
    }

    @Test
    public void testSecond() {
        myClass.justSayHello(false);
    }
}

When I run a test with Coverage in Android Studio 3.0 Beta-2 using classpath 'com.android.tools.build:gradle:3.0.0-beta2', no coverage is reported for it.

But when I run the test using classpath 'com.android.tools.build:gradle:2.3.3', 100% coverage reported.

When I change my source code to Java:

public class MyClass {
    public String justSayHello(boolean yes) {
        if (yes) {
            return "Hello";
        } else {
            return "Sorry";
        }
    }
}

It works fine for both gradle build tools

It seems to me that 'com.android.tools.build:gradle:3.0.0-beta2' has the broken test coverage measurement for Kotlin.

Did I miss anything? Is there a workaround for me to get the test coverage in Kotlin?


回答1:


In case anyone is still looking for a solution, adding in a gradle task to copy the cases from the tmp directory into the directory that the coverage output looks in helps with this issue as a workaround.

For example add copyTestClasses to your module gradle file

task copyTestClasses(type: Copy) {
    from "build/tmp/kotlin-classes/debug"
    into "build/intermediates/classes/debug"
}

And then setting up your defaults to run the gradle task before running the tests

It can help to find both of the directories in your project manually before trying to point to them using gradle, to make sure that you're pointing to the right place (flavours will change the directories that you need to point to)



来源:https://stackoverflow.com/questions/45819700/android-studio-3-0-gradle-3-0-0-beta2-breaks-kotlin-unit-test-coverage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!