Kotlin继承不适用于测试课程

时间:2018-09-06 14:25:16

标签: java android kotlin

我有一个基类,它在Java中有一些util方法。 我正在尝试在Kotlin测试类中继承该基类。

我能够继承并能够使用util方法。但是当我运行测试时,该方法从未调用过。

请注意,我正在运行一些使用Espresso的测试。

这是我的基础课

public class BaseTest {
     @get:Rule
     val mActivityTestRule = ActivityTestRule(SplashActivity::class.java)

     protected void login(String username, String password) {
        //some logic here
     }
}

我的科特琳考试班

@RunWith(AndroidJUnit4::class)
class FragmentTest : BaseTest() {
    @get:Rule
    val mActivityTestRule = ActivityTestRule(SplashActivity::class.java)

    @Before
    fun setup() {
        OkHttpClient client = HttpClientManager.getInstance().getOkHttpClient();
        idlingResource = CustomOkHttp3IdlingResource.create("okhttp", client);
        IdlingRegistry.getInstance().register(idlingResource);
    }

    @Test
    fun flowTest() {
        login("username","password")
    }

}

从Kotlin测试类中,永远不会调用login()方法。 任何建议都非常感谢,在此先感谢:)

1 个答案:

答案 0 :(得分:0)

我找到了根本原因,在父类和派生类中都不应有相同的@Rule,将其从派生类中删除后,现在可以正常工作了。

这是我的基础课

public class BaseTest {
     @get:Rule
     val mActivityTestRule = ActivityTestRule(SplashActivity::class.java)

     protected void login(String username, String password) {
        //some logic here
     }
}

我的科特琳考试班

@RunWith(AndroidJUnit4::class)
class FragmentTest : BaseTest() {
     //it works once I remove the below rule
     //@get:Rule
    //val mActivityTestRule = ActivityTestRule(SplashActivity::class.java)

    @Before
    fun setup() {
        OkHttpClient client = HttpClientManager.getInstance().getOkHttpClient();
        idlingResource = CustomOkHttp3IdlingResource.create("okhttp", client);
        IdlingRegistry.getInstance().register(idlingResource);
    }

    @Test
    fun flowTest() {
        login("username","password")
    }

}