gpt4 book ai didi

android - 如何在开始 Espresso 测试之前准备数据库数据?

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:36 26 4
gpt4 key购买 nike

数据库:SQLite

表:联系人

Espresso 测试:

@Test
public void testBlock() {
onData(anything()).inAdapterView(withId(R.id.container_ListView)).atPosition(0).onChildView(withText(R.string.block_user))
.perform(click());
}

并且测试成功通过。但只有在开始联系之前状态为unblock(数据库表中的列Status)时,它才会成功。所以我需要(在开始测试之前)将此联系人更新为状态取消阻止。我怎样才能做到这一点?或者有人对此有更好的解决方案吗?

最佳答案

这可以在 @Before 方法中完成,也可以在开始 Activity 之前在测试用例中完成。

首先,您需要将您的 Activity 规则更改为:

    @Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
MainActivity.class, false, false);

注意最后一个 false 标志,这表示您的 Activity 不会在测试开始时自动启动。

然后在你的测试类中你可以添加这个方法:

 @Before    
public static void PrepareDatabase() {
// Instantiate your Service that performs an action on the database
// give it this context: InstrumentationRegistry.getTargetContext();
// For example the code could look like this:
DatabaseHelper(InstrumentationRegistry.getTargetContext()).setYourValue();
mActivityRule.launchActivity(null); //launches the test activity
}

然后正常写你的测试。此代码对您的数据库执行一些操作,然后启动您的测试 Activity 。您也可以将其传递到您的测试方法中,而不是传递到 @Before 方法中。

关于android - 如何在开始 Espresso 测试之前准备数据库数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42888822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com