Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
848 views
in Technique[技术] by (71.8m points)

android - How to combine different testInstrumentationRunner

Is there any way to have different testInstrumentationRunner for each test? Do I have to create a Task for it? I have my runner as follows :

class MyTestRunner : AndroidJUnitRunner() {
    override fun newApplication(
        cl: ClassLoader?,
        className: String?,
        context: Context?
    ): Application {
        return super.newApplication(cl, MyTestApp::class.java.name, context)
    }
}

But what if I want to run some using the real app? how can I choose it?

I've been reading that is possible doing it with @RunWith(AndroidJUnit4ClassRunner::class)on my tests I'm using it but I understand if I do this it takes the one of the defaultConfig

defaultConfig {
        testInstrumentationRunner("mypackage.MyTestRunner")
}

But I can not use something like it says Required:KClass<out Runner!>

@RunWith(MyTestRunner::class)

In case I could do this I'd understand how can I use different runners.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Try to extend androidx.test.ext.junit.runners.AndroidJUnit4:

import androidx.test.ext.junit.runners.AndroidJUnit4

class MyTestRunner : AndroidJUnit4() {
    ...
}

The dependency to use:

// https://mvnrepository.com/artifact/androidx.test.ext
androidTestImplementation "androidx.test.ext:junit:1.1.2"

The documentation suggests it as the default runner, therefore Kotlin interoperability should be given. Only KClass<out Runner!> is being accepted by the @RunWith annotation in a .kt file.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...