小编Tho*_*ena的帖子

Android:Espresso不会等到片段或活动显示,因此每次测试都失败

我知道围绕这个有很多问题,但我找不到任何可以帮助我的东西:(

我尝试使用Espresso为Android应用程序生成UI-Test.在击败依赖性问题之后(因为某些库在不同版本中被包含两次作为来自其他库的依赖)我仍然无法创建工作测试...

我知道IdlingResource,但正如我所读到的,espresso等待开箱即用,直到主线程和AsyncTaskPool空闲,然后再运行任何测试.

为了与它取得联系,我创建了一个包含两个活动的简单应用程序,一个启动画面和一个主要活动.在启动mainActivity之前,splashscreen包含等待三秒钟的内容

 new Handler().postDelayed(new Runnable() {
   @Override
   public void run() {
     finish();
     Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class);
     startActivity(intent);
   }
 }, 3000);
Run Code Online (Sandbox Code Playgroud)

我也尝试使用AsyncTask,但似乎没有任何工作正常,因为每个测试都失败了.

该测试仅检查视图上是否显示包含已定义文本的TextView:

onView(withText("DummyText")).check(matches(notNullValue()));
Run Code Online (Sandbox Code Playgroud)

我认为创建一个简单的测试并不困难......

因为我要测试api> = 16我需要浓缩咖啡.仅仅对我来说,我使用uiAutomator检查它(我知道这是为了api> = 18)但是有一些智能逻辑可以等待某些东西显示.....并且完美地工作......

testing android automated-tests android-espresso android-uiautomator

9
推荐指数
1
解决办法
8853
查看次数

NDK:是否可以在 build.gradle 中定义 android NDK 版本,以便本机代码将使用定义的版本?

这是我的问题:

我有一个存储在 Github 的库。该库包含本机代码以及处理 C++ 文件所需的一切。在本地,项目/库工作正常,但我想通过JitPack将该库作为依赖项包含在内。所以这就是问题开始的地方......

JitPack 似乎使用最新版本的 NDK,但这不是我可以构建代码的版本。目前,没有时间更新我的库,但找不到任何解决方案将 NDK 版本定义为项目的依赖项。

我知道ndk.dir可以定义 atlocal.properties但该文件不应该是 repo 的一部分。我想知道是否有办法告诉 JitPack 它应该使用哪个 NDK-Version 来构建依赖项。

我很好奇你们中是否有人已经遇到过类似的问题,以及是否有人知道如何解决它。

我很欣赏任何想法。:)

android android-ndk ndk-build jitpack

7
推荐指数
1
解决办法
8232
查看次数

如何在 Android UnitTests 中使用 SpannableString

我只是偶然发现了一个问题,我还没有找到解决方案,所以我想我会问你:)

假设我有以下方法(Kotlin):

fun getValue(): SpannableString {

    val value = "MyTestValue"
    val subString = "Test"

    // init spannable string
    val spannableString = SpannableString(value)

    // get position of substring
    val position = value.indexOf(subString)

    // insert span
    spannableString.setSpan(BackgroundColorSpan(ContextCompat.getColor(context, R.color.yellow)), position, position + subString.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

    // return result
    return spannableString
}
Run Code Online (Sandbox Code Playgroud)

这是我的单元测试方法:

@Test
fun `value | on filter | returns correct value`() {

    // define mock behavior
    val model = TestUtils.getTestModel() //returns a test model

    // init Observable
    val observable = TestObservable(model)

    // check …
Run Code Online (Sandbox Code Playgroud)

testing android unit-testing spannablestring

5
推荐指数
0
解决办法
1819
查看次数

如何从jetpack compose中的可见地图获取LatLngBounds

我尝试在我的项目中使用可组合项GoogleMap,但现在我需要LatLngBounds可见的谷歌地图onMapLoaded,以便我能够在这个边界内加载一些 POI,但我找不到如何获取此信息的答案。

有人可以给我线索吗?

android google-maps android-jetpack-compose composable

5
推荐指数
1
解决办法
2282
查看次数

Jetpack Compose UI 测试:如果显示两次,如何查找具有特定文本值的节点

我尝试为我的 Android 应用程序创建一个 ui 测试,该应用程序完全由 jetpack compose 构建。我有一个屏幕,其中某个值显示两次,一次作为简单文本,第二次作为按钮标签。

在 ui 测试期间如何使用该文本选择按钮?

我搜索了很多,发现了一些有关符号属性的内容,因此您可以搜索具有 Button 类型角色的节点,但所描述的匹配器函数withRole不存在,所以我很好奇是否还有另一种我现在看不到的方法。

这是我找到的链接:

https://proandroiddev.com/test-jetpack-compose-layouts-easily-with-role-semanticproperty-dcf19f64130f

android uitest android-jetpack-compose

3
推荐指数
1
解决办法
5723
查看次数

如何解析包含键值对的 JSONObject?

首先:我知道 JSON 应该包含一个带有键值对的数组,但它不是我的 API,所以我无法更改它。

响应如下所示:

{
    "translations": {
        "my.key.nr.0": "Value 0",
        "my.key.nr.1": "Value 1",
        "my.key.nr.2": "Value 2",
        "my.key.nr.3": "Value 3",
    },
    "hash": "123xyz",
    "length": 3,
    "language": "de"
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的 DTO:

data class TranslationsDto(
    val translations: ??????????, // <-- dont't know what to use here
    val hash: String?,
    val length: Int?,
    val language: String?
)
Run Code Online (Sandbox Code Playgroud)

最后,这是我的问题:

我需要解析我可以在我的应用程序中使用的 DTO 的响应(至少 Retrofit 应该解析响应)。如果 的值translations是一个数组,那就没有问题,但我不知道如何解析这个 JSON 结构。

也许你们有人有一些想法?

parsing json dto kotlin retrofit2

2
推荐指数
1
解决办法
1498
查看次数