当导航抽屉包含带有图像和文本视图的行列表时,如何单击导航抽屉项?
我使用了以下的Espresso测试源示例:git/testapp_test/src/main/java/com/google/android/apps/common/testing/ui/testapp/DrawerActionsTest.java
我从贡献中检索了DrawerActions和DrawerMatchers,并将它们放在我的测试项目中.
导航抽屉行是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@drawable/list_selector">
<ImageView
android:id="@+id/icon"
etc ... />
<TextView
android:id="@+id/title"
etc.... />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
导航项目是:
public class NavDrawerItem {
public String title;
public int icon;
....
// a matcher
@Override
public boolean equals( Object mob2) {
String otherName = ((NavDrawerItem) mob2).title;
return( title.equals( otherName));
}
}
Run Code Online (Sandbox Code Playgroud)
NavigationDrawerAdapter填充导航抽屉视图.
Espresso测试源打开抽屉,关闭它,重新打开它......但我找不到第一个"导入"项目的匹配项.因此,测试会在执行点击时停止.
代码是:
public LearnerAppAutoTest() {
super(MainActivity.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
getActivity();
}
public void testOpenAndCloseDrawer() {
openDrawer(R.id.drawer_layout);
closeDrawer(R.id.drawer_layout);
openDrawer(R.id.drawer_layout);
onView(withId(R.id.drawer_layout)).check(matches(isOpen())); …Run Code Online (Sandbox Code Playgroud) Espresso如何点击长选项菜单中尚未显示的(选项)菜单项?
打开选项菜单很简单:
openActionBarOverflowOrOptionsMenu( getInstrumentation().getTargetContext());
Run Code Online (Sandbox Code Playgroud)
我试过例如scrollTo,但它没有成功:
onView( withText("Option menu item text")).perform( scrollTo(), click());
onView( withText( R.id.optionMenuId)).perform( scrollTo(), click());
onView( withId( is( R.id.appOptionMenu))).perform( swipeDown()); // where SwipeDown is a simple utility method on GeneralSwipeAction.
onData( anything()).inAdapterView( withId(R.id.wpeOptionMenu)).atPosition( 12).perform(click()); // I guess because it is not an adapter
Run Code Online (Sandbox Code Playgroud)
你有一个很好的解决方案吗?
当使用 JDK 11 目标时,我收到此错误:
错误:包 android.app 不存在
我看到了升级到“Canary”AS 版本的解决方案。我更喜欢使用测试版或稳定版 Android Studio。我定期更新它。不打算仅仅为了升级而进行重大改变。
因此,这效果很好:即使使用 Android Studio“项目设置”和带有“JDK 11”的“JDK”。
当 build.gradle 具有这些编译选项时,一切正常。
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)
这给出了提到的错误:
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
Run Code Online (Sandbox Code Playgroud)
我的 build.grade 项目文件是:
buildscript {
repositories {
mavenCentral()
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.1'
classpath 'org.ajoberstar:grgit:3.3'
}
}
allprojects {
repositories {
maven { url "https://jitpack.io" }
google()
}
}
Run Code Online (Sandbox Code Playgroud)
我的 build.grade 模块文件的部分内容是:
apply plugin: 'com.android.application'
repositories {
mavenCentral()
maven { url …Run Code Online (Sandbox Code Playgroud) 有没有办法设置位置更新频率?还有最小距离?
原因:我想根据电池节省来设置它。
我怎样才能使这个工作?我读了很多类似的策略,唉.使用高于23.1.1的支持库会一次又一次失败.
dependencies {
compile 'com.android.support:design:25.0.0'
compile 'com.android.support:support-v4:25.0.0'
compile files('libs/slf4j-android-1.5.8.jar')
androidTestCompile 'com.android.support:support-annotations:25.0.0'
androidTestCompile( 'com.android.support.test:rules:0.5')
androidTestCompile( 'com.android.support.test.espresso:espresso-contrib:2.2.2')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
}
Run Code Online (Sandbox Code Playgroud)
我收到了这条消息:
警告:与依赖项'com.android.support:recyclerview-v7'冲突.app(25.0.0)和测试app(23.1.1)的已解决版本有所不同.有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict.警告:与依赖项'com.android.support:support-v4'冲突.app(25.0.0)和测试app(23.1.1)的已解决版本有所不同.有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict.警告:与依赖项'com.android.support:appcompat-v7'冲突.app(25.0.0)和测试app(23.1.1)的已解决版本有所不同.有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict.警告:与依赖项"com.android.support:design"冲突.app(25.0.0)和测试app(23.1.1)的已解决版本有所不同.有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict.
第1步:我尝试使用排除组...没有用.
第2步:我也尝试了不同的策略,例如:configurations.all {resolutionStrategy {force'com.android.support:support-annotations:23.1.1'}}
第3步:当然我尝试了第一个gradlew:app:dependenices等,但是那个一直在崩溃.是的,我使用的是JDK1.8.这是一个注册的bug,自夏天以来一直没有解决.
顺便说一句...... Android,支持包和Espresso都来自谷歌?
android dependency-management gradle android-espresso android-design-library
将Openshift用作容器即服务很容易,请参阅详细步骤。因此,通过Docker客户端,我可以使用Openshift。
我想使用Minishift在笔记本电脑上工作。那是笔记本电脑上Openshift的本地版本。
我应将哪个docker注册表与Minishift结合使用?Minishift没有自己的注册表-我想。
所以,我想做:
$ maven clean install -- building the application
$ oc login to your minishift environment
$ docker build -t myproject/mynewapplication:latest
$ docker tag -- ?? normally to a openshift docker registry entry
$ docker push -- ?? to a local docker registry?
$ on 1st time: $ oc new-app mynewapplication
$ on updates: $ oc rollout latest dc/mynewapplication-n myproject
Run Code Online (Sandbox Code Playgroud) 我在 Windows 10 Home、Oracle Virtualbox、扩展包、Docker 工具箱和 Minishift 环境中本地运行 Docker 应用程序。
几个月后重新启动,我收到各种错误。当我重新运行 minishift 时,我得到了一堆“OK”,最后我收到了这条消息:
启动 Minishift VM .... FAIL E0807 20:29:20.950373 672 start.go:428] 启动 VM 时出错:获取主机状态时出错:机器不存在。重试。
命令是: $ minishift start --vm-driver=virtualbox --memory=3G
首先,我通过 Docker Quickstart 终端启动 docker。因为我可以使用 docker(和 openshift),所以我知道环境是正确的。
我怎样才能再次运行 minishift?
使用nice/new osmbonuspack包:
有没有办法在地图上立即显示标记的名称(或标题)?
所以,不要点击标记.
如何访问正则表达式中的匹配组?
例如:${line} = Set variable String with-8
我怎么能在单独的变量中获取“String with”部分和数字部分?
我试过:
Test case determining strings and number
${line} = Set variable String with-8
${resultRegexp} = Evaluate re.search('(.+)\\-(\\d+)', '''${line}''')
Log The string(s) part is: ${resultRegexp[0] # or group(1) or so
Log The number part is: ${resultRegexp[1] # or group(2) or so
Run Code Online (Sandbox Code Playgroud) 使用 JDK 17 将 Spring Boot 2.2 应用程序更改为 2.5.5 时,Surefire 测试插件不会启动任何现有测试。这是消息:
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
Run Code Online (Sandbox Code Playgroud)
为什么它不启动任何现有的测试?测试的名称是*Test.java。
当显式添加版本高于 2.19 的 Surefire 插件时,我看到了类似的行为。Spring Boot 测试启动器将有一个更新的 Surefire 插件。
Maven版本是3.6.3。路径上是jdk17.1.0。
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
Run Code Online (Sandbox Code Playgroud)
我查看了类似的问题,发现测试文件夹的路径应该位于“src”下方。是的。
在文件夹中是相同的:
这两个文件夹下面都是一个“java”文件夹。
Surefire 没有明确地出现在 pom.xml 中,因为它位于 spring-boot-test 启动器中。