Java Android-检查按钮点击是否成功的单元测试
我正在处理一个应用程序,希望通过单击“登录”按钮测试成功登录是否更改了我的应用程序的loggedin值,但我一直得到: CalledFromErrorThreadException 编辑:添加了stacktrace。我使用的是Android Studio 3.1.3,我正在虚拟设备(Nexus S棒棒糖)上运行测试 守则:Java Android-检查按钮点击是否成功的单元测试,java,android,multithreading,exception,junit,Java,Android,Multithreading,Exception,Junit,我正在处理一个应用程序,希望通过单击“登录”按钮测试成功登录是否更改了我的应用程序的loggedin值,但我一直得到: CalledFromErrorThreadException 编辑:添加了stacktrace。我使用的是Android Studio 3.1.3,我正在虚拟设备(Nexus S棒棒糖)上运行测试 守则: @Rule public ActivityTestRule<LoginActivity> loginActivityActivityTestRule =
@Rule
public ActivityTestRule<LoginActivity> loginActivityActivityTestRule =
new ActivityTestRule<LoginActivity>(LoginActivity.class);
private LoginActivity loginActivity = null;
@Before
public void setUp() throws Exception {
loginActivity = loginActivityActivityTestRule.getActivity();
}
@Test
public void checkLoginButton() throws Throwable {
final Button login = loginActivity.findViewById(R.id.login);
loginActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
login.performClick();
}
});
assertTrue(loginActivity.sc.loggedin);
}
@After
public void tearDown() throws Exception {
loginActivity = null;
}
由于您使用的是
ActivityTestRule
我假设您使用的是浓缩咖啡。如果您使用的是Espresso,则应该使用Espresso API与视图交互,而不是查找视图并调用performClick
()。将测试更新为以下内容:
@Test
public void checkLoginButton() throws Throwable {
onViewWithId(R.id.login).perform(click());
assertTrue(loginActivity.sc.loggedin);
}
请包括整个堆栈跟踪,而不仅仅是错误消息。另外,您需要指定您正在使用的测试运行程序。这是Robolectirc吗?这是安卓测试吗?还是这只是普通的香草杜松子?
@Test
public void checkLoginButton() throws Throwable {
onViewWithId(R.id.login).perform(click());
assertTrue(loginActivity.sc.loggedin);
}