嗨,
我有一个非常简单的集成测试
require 'integration_test_helper'
Capybara.current_driver = :rack_test
class AdminSignsInTest < ActionDispatch::IntegrationTest
test 'can sign in' do
email = 'bob@example.com'
password = 'secret_password'
Admin.create email: email, password: password
visit new_admin_session_path
fill_in 'admin_email', with: email
fill_in 'admin_password', with: password
click_button I18n.t('devise.views.sign_in')
assert_equal I18n.t('devise.sessions.signed_in'), find('p.notice').text
end
end
Run Code Online (Sandbox Code Playgroud)
当我将Capybara驱动程序设置为rack_test测试通行证时,但是当我将其设置为时selenium,它会因"电子邮件或密码无效"而失败.在登录页面上(我正在使用Devise).我究竟做错了什么?
测试看起来像那样(它是ActivityInstrumentationTestCase2):
public void testItShowsThreeRows() {
activity = getActivity();
activity.runOnUiThread(new Runnable() {
public void run() {
AccountsList accountsList = new AccountsList(activity, accounts);
list.show();
}
});
ListView listView = (ListView)activity.findViewById(R.id.list);
assertEquals(3, listView.getChildCount());
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试测试的代码.但测试失败,因为activity.runOnUiThread立即返回.我可以插入Thread.sleep,测试变成绿色,但对我来说看起来有点笨拙.我是否必须使用某些线程同步或者可能需要轮询某些UI元素才能准备好?
我试着用它注释,@UiThreadTest但这也不起作用.代码list.show()填充一个ListViewvia自定义适配器,并getView在另一个线程上调用(不是一个测试运行 - 我与之无关,我没有线程或asynctasks,没有任何东西).测试再次失败,因为它在UI准备好进行检查之前返回.
我有几个简单的测试,比如assertNotNull(mActivity);(我正在阅读MDTorres"Android应用程序测试指南").被测活动运行良好.每一次测试都运行良好.但是,如果我在第二次测试中一次运行多次测试,则getActivity()永远不会返回.logcat中没有错误(最后一行"Starting Intent ..."),没有任何错误.调试也没有多大帮助,如果我介入getActivity()它抱怨没有可用的源代码.
另一个测试项目 - 来自Google的ActivityTesting即使进行了多次测试也运行正常,因此Eclipse配置正确.
有没有人遇到过这样的事情?
我有一个带有"显示密码"复选框的密码字段,我想为它编写集成测试.如何检查EditText是否确实被屏蔽了?