Как мне управлять ресурсами в Котлине?Попытка сделать функцию настройки статической для запуска один раз не перед каждым тестом - PullRequest
0 голосов
/ 20 сентября 2019

Я хочу запустить функцию настройки только один раз, а не перед каждым тестом в классе.

Я попытался сделать статическую функцию установки статической, но я получил ошибку - неразрешенная ссылка.

Если я сделаю ActivityRule в BaseClass статическим (с объектом-компаньоном), я не получаю эту ошибкуно когда я запускаю тест, я получаю, что контекст нулевой.

Каждый раз, когда я пытаюсь использовать context.findViewById, я получаю, что context.findViewById не должен быть нулевым.

//Base Class
@RunWith(AndroidJUnit4::class)
@LargeTest
open class BaseTest {
    @get:Rule
    val activityRule = ActivityTestRule(HomeActivity::class.java)



//Child class
@RunWith(AndroidJUnit4::class)
@LargeTest
open class HomeScreenWithoutInternet : BaseTest() {

    companion object {

        private lateinit var context: HomeActivity
        @BeforeClass @JvmStatic fun setUp() {
            context = activityRule.activity  //HERE i get unresolved reference activityRule
            val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
            wifiManager.isWifiEnabled = false
            TimeUnit.SECONDS.sleep(5)
            assertFalse("There is internet connection available", isConnected(context))
        }
    }

@Test
    fun checkTextColorIsGray() {
        val colorOfTvNetworkNameDisplayed =
            context.findViewById<TextView>(R.id.tvNetworkName).currentTextColor
        val contextColorOfTvNetworkName = context.getColor(R.color.text_dark_gray)
        assertTrue(colorOfTvNetworkNameDisplayed == contextColorOfTvNetworkName)
    }
...