我有一个基类,它在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()方法。 任何建议都非常感谢,在此先感谢:)
答案 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")
}
}