наследство kotlin не работает в тестовом классе - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть базовый класс, в котором есть несколько утилит в Java. Я пытаюсь унаследовать этот базовый класс в тестовом классе Котлина.

Я могу унаследовать и использовать методы util. Но метод никогда не вызывался при запуске теста.

Обратите внимание, что я запускаю тест, в котором используется эспрессо.

Это мой базовый класс

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 голосов
/ 06 сентября 2018

Я нашел основную причину, у нас не должно быть одинакового @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")
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...