解决方法:
dependencies {
// Espresso
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
// UIAutomator
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}
import androidx.test.espresso.Espresso;
import androidx.test.espresso.action.ViewActions;
import androidx.test.espresso.matcher.ViewMatchers;
import androidx.test.espresso.assertion.ViewAssertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ExampleEspressoTest {
@Test
public void testButtonClick() {
// 点击一个按钮
Espresso.onView(ViewMatchers.withId(R.id.button)).perform(ViewActions.click());
// 验证文本视图是否更新
Espresso.onView(ViewMatchers.withId(R.id.textView))
.check(ViewAssertions.matches(ViewMatchers.withText("Button Clicked")));
}
}
在上面的示例中,我们使用Espresso.onView()方法来查找具有给定ID的视图,并使用ViewActions.click()方法来模拟点击操作。然后,我们使用ViewAssertions.matches()方法来验证文本视图是否更新为预期的文本。
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.uiautomator.By;
import androidx.test.uiautomator.UiDevice;
import androidx.test.uiautomator.UiObject;
import androidx.test.uiautomator.UiObjectNotFoundException;
import androidx.test.uiautomator.UiSelector;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ExampleUIAutomatorTest {
private UiDevice mDevice;
@Before
public void setUp() {
// 初始化UIAutomator设备
mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
}
@Test
public void testButtonClick() throws UiObjectNotFoundException {
// 点击一个按钮
UiObject button = mDevice.findObject(new UiSelector().resourceId("com.example.app:id/button"));
button.click();
// 验证文本视图是否更新
UiObject textView = mDevice.findObject(new UiSelector().resourceId("com.example.app:id/textView"));
Assert.assertEquals("Button Clicked", textView.getText());
}
}
在上面的示例中,我们使用UiDevice.getInstance()方法初始化UIAutomator设备,并使用UiSelector().resourceId()方法来查找具有给定资源ID的视图。然后,我们使用click()方法模拟点击操作,并使用getText()方法来验证文本视图是否更新为预期的文本。
注意:以上示例仅为演示目的,实际的UI测试可能需要更复杂的操作和断言。根据您的应用程序的需求,您可以使用Espresso和UIAutomator的其他功能和方法来编写更复杂的UI测试代码。