我需要导入什么才能在UnitTests中使用launchActivity <>()?

时间:2019-03-30 15:45:53

标签: android android-testing androidx

所以我正尝试按照google在这里的说明来测试我的活动:https://developer.android.com/guide/components/activities/testing

但是代码launchActivity<MyActivity>()不起作用。我是否需要将launchActivity定义为规则,或者是否需要在gradle中导入库?

这些是我已经拥有的进口商品

testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'

3 个答案:

答案 0 :(得分:1)

在Kotlin中,出于某种原因似乎需要这样:

val activityScenario = launch(MainActivity::class.java)

此导入语句为:

import androidx.test.core.app.ActivityScenario.launch

也许这不是一回事?不知道,但是可以。

答案 1 :(得分:0)

  

我是否需要将launchActivity定义为规则或我是否有图书馆   需要导入gradle吗?

是的。您需要像这样在测试类的开头设置规则;

@RunWith(AndroidJUnit4.class)
public class YourActivityTests extends AndroidJUnitRunner {

    @Rule
    public ActivityTestRule<YourActivity> mYourActivityActivityTestRule =
        new ActivityTestRule<YourActivity>(YourActivity.class);

所需的库导入捆绑在import androidx.test包中。

这是针对Java的,但是Kotlin中应该有一种等效的方法。希望这会有所帮助。

编辑:您应将最新 稳定版本(版本控制中只有数字的版本)用于生产应用。 确实需要库的那些版本时,才使用任何带有-alpha或-rc后缀的版本。

答案 2 :(得分:0)

您需要将以下依赖项导入gradle。

androidTestImplementation 'androidx.test:core-ktx:1.1.0'

此外,还应将此内容添加到gradle文件中,以避免在测试代码中添加launchActivity方法之后出现compile time error

kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }