小编Mar*_*tek的帖子

Kotlin lambda回调的单元测试

假设我们有以下功能要测试

fun loadData(dataId: Long, completion: (JsonElement?, Exception?) -> Unit) {
    underlayingApi.post(url = "some/rest/url",
            completion = { rawResult, exception ->
                val processedResult = processJson(rawResult)
                completion(processedResult, exception)
            })
}
Run Code Online (Sandbox Code Playgroud)

我很清楚如何模拟,注入,存根和验证调用 underlayingApi.

如何验证通过返回的结果 completion(processedResult, exception)

java lambda unit-testing mockito kotlin

12
推荐指数
2
解决办法
3795
查看次数

.buckconfig for ReactNative项目

我正在玩反应原生.我读了很多关于buckbuild系统的内容.现在我正在尝试连接这两个(为了充分发挥核素编辑器的潜力).

有没有人知道如何buckconfig为现有的反应原生项目生成文件?这是否可以自动实现?如果没有,是否有人有一个与buckbuild一起工作的项目并且反应原生?

我也很感激所有关于本地和buckbuild的反馈教程.

facebook buck react-native nuclide-editor

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

在 kotlin 多平台移动 gradle 构建中,什么是“ivy”存储库?它来自哪里以及如何修复/删除它?

在使用 Kotlin 多平台移动项目时,我在配置项目时收到此错误。特别是通过 Xcode 内的 iOS 默认脚本构建它时。

这是错误

> Configure project :HomeShared
Kotlin Multiplatform Projects are an Alpha feature. See: https://kotlinlang.org/docs/reference/evolution/components-stability.html. To hide this message, add 'kotlin.mpp.stability.nowarn=true' to the Gradle properties.
The property 'kotlin.mpp.enableGranularSourceSetsMetadata=true' has no effect in this and future Kotlin versions, as Hierarchical Structures support is now enabled by default. It is safe to remove the property.
The property 'kotlin.native.enableDependencyPropagation=false' has no effect in this and future Kotlin versions, as Kotlin/Native dependency commonization is now enabled by default. …
Run Code Online (Sandbox Code Playgroud)

android gradle ios kotlin kotlin-multiplatform

8
推荐指数
1
解决办法
851
查看次数

实例中的内存泄漏

我一直在努力识别内存泄漏.我想我的项目循环进度视图中有几个内存泄漏.

我的一个猜测是内部类中有内存泄漏FadeRunnable.但说实话,我不确切知道如何确定这是否是问题的根源.好吧,当我按常规方案切换方向时,我看到内存使用量增加,如下所示.如果我注释掉FadeRunnable该类的用法,步骤会更小(但仍然存在,所以我猜这不是唯一的泄漏)

记忆步骤

一旦我分析堆转储,我看到了一些东西.但实际上我不知道这些值是什么意思.我做的事情是

  1. 多次改变方向
  2. 打开堆转储并按'保留大小'排序
  3. 现在,当我点击"CircularProgressView"时,我在右侧区域看到了8行.我猜这意味着有8个'CircularProgressView'实例泄露并在内存中作为孤儿存在.

它是否正确?如果是这样,我如何找到保存/保存此对象的转储信息(我猜在下部窗格中的某个位置).

堆转储

我希望能够逐步解释如何找出是否以及哪个对象泄漏了一些内存.

可以在本课程中找到所有可疑视图的代码.

https://github.com/momentummodules/CircularProgressView/blob/master/circularprogressview/src/main/java/momentum/circularprogressview/CircularProgressView.java

但是也可以随时查看整个项目以获得更深入的洞察力,以及是否想要玩它.

提前致谢!

UPDATE

上面的代码链接显示了内存泄漏内部类的固定代码.以下代码段显示了永远不应该使用的原始内存泄漏代码

/**
 * Mem-leaking code, for fixed code see repository link
 * https://github.com/momentummodules/CircularProgressView/blob/master/circularprogressview/src/main/java/momentum/circularprogressview/CircularProgressView.java
 */
public class CircularProgressView extends View
{
    ...
    private Thread fadeThread = null;
    ...

    ...
    class FadeRunnable implements Runnable
    {
        @Override
        public void run()
        {
            ...
        }
    }
    ...

    ...   
    private void startFade(boolean fadeIn)
    {
        // check existing
        if(this.fadeThread != null)
        {
            // check …
Run Code Online (Sandbox Code Playgroud)

java memory performance android memory-leaks

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

方便的Kotlin LoggerFactory简化

使用kotlin使用SLF4J或其他日志记录方法最方便的方法是什么?

通常开发人员忙于样板代码

private val logger: Logger = LoggerFactory.getLogger(this::class.java)
Run Code Online (Sandbox Code Playgroud)

在每个班级中获得适当的记录器?

用Kotlin统一/简化这个的最方便的方法是什么?

logging android slf4j kotlin slf4j-api

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

KDB +/Q从命名空间访问根命名空间

我跳进另一个命名空间后,如何访问根命名空间中的函数/变量.

像这样的例子:

q)\d .cfg
q)domIV:1000
q)\d .
q)n:1000
Run Code Online (Sandbox Code Playgroud)

然后我知道如何domIV从其他命名空间访问变量,但我不知道如何n从那里访问变量:

q)\d .seed
q).cfg.domIV / works
q)n          / does not work
q).n         / does also not work
Run Code Online (Sandbox Code Playgroud)

如何访问根命名空间?

谢谢

namespaces kdb q-lang

6
推荐指数
1
解决办法
1569
查看次数

Android Studio 调试“查看位图”缩小

我在使用 Android Studio 的“查看位图”预览功能时遇到问题。我有一个 29000 和高度 255 的位图。但是当我在位图类的调试器中单击“查看位图”时,我看到一个缩小的版本。是的,我知道 29k 宽度很多,但它与 Android Studio < 1.5 一起使用,所以我猜它是某个地方的设置。

这是调试器视图中有关位图的信息

调试器位图

当我单击“查看位图”时,这是位图。

位图

如您所见,尺寸不正确。该调试预览位图比我想看到的要小得多。

任何建议如何解决这个问题?

debugging android bitmap preview android-studio

6
推荐指数
0
解决办法
876
查看次数

使用 react native 进行 UI 测试。如何修复时间戳事件匹配错误:找不到匹配元素

我正在尝试将 UI 测试集成到一个相当大的 React Native 项目中。但是一旦我想记录 ui 测试,我就会收到警告

Timestamped Event Matching Error: Failed to find matching element

这是我正在点击的 ui 元素。

<TouchableOpacity style={containerStyle}
                  onPress={this.props.onPress}
                  accessibilityLabel='back_button_touchable'
                  accessible={true}
                  testID='back_button_touchable'
                  underlayColor='#99d9f4'>
                <Image style={iconStyle} source={require('../white-arrow.png')}/>
                <Text style={styles.text}>{this.props.text}</Text>
</TouchableOpacity>
Run Code Online (Sandbox Code Playgroud)

我刚刚建立了一个新的 React Native 项目,并试图让 ui 测试运行,这很好。所以这让我想到了一个问题,即现有代码/构建设置以某种方式阻止了元素检索。

有什么想法可以禁用或阻止 ui 测试?

xcode ios react-native xcuitest

6
推荐指数
1
解决办法
1352
查看次数

访问swift数组时swift_isUniquelyReferenced_nonNull_native中的EXC_BAD_ACCESS

问题

在编写单元测试和嘲笑时,NSTimer我看到了

Exception: EXC_BAD_ACCESS (code=1, address=0x8)
Run Code Online (Sandbox Code Playgroud)

里面

swift_isUniquelyReferenced_nonNull_native
Run Code Online (Sandbox Code Playgroud)

此处访问数组invalidateInvocations(内部func invalidate())时出现这种情况。

class TimerMock: Timer {

    /// Timer callback type
    typealias TimerCallback = ((Timer) -> Void)

    /// The latest used timer mock accessible to control
    static var  currentTimer: TimerMock!

    /// The block to be invoked on a firing
    private var block:        TimerCallback!

    /// Invalidation invocations (will contain the fireInvocation indices)
    var invalidateInvocations: [Int] = []

    /// Fire invocation count
    var fireInvocations:       Int   = 0

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

xcode memory-management exc-bad-access ios swift

6
推荐指数
1
解决办法
2756
查看次数

将 Android 上的非致​​命错误记录到 Firebase / Crashlytics 的最佳方法

我知道可以记录非致命ExceptionThrowable崩溃的情况。但现在让我们考虑以下情况。

我们有自定义记录器,它还提供类似的东西SLog.e(String message)并且只接受字符串消息。现在我们想要跟踪所有这些错误日志作为 crashlyics 的非致命错误。我可以创建一个MyException并将该错误记录到 crashlytics 中。但这有两个主要缺点:

  1. 给定的消息不会显示在 Firebase Crashlytics 概览仪表板中
  2. 如果有不同的错误类型和不同的消息,Firebase 会将它们全部分组在一起

在 iOS 上,它很简单,因为分组是通过域和错误代码完成的,但在 Android 上,它只是按文件名和行进行分组。

我们如何方便地跟踪 crashlytics 的随机错误,而无需为每个错误日志创建异常类的样板代码。

logging android firebase crashlytics

6
推荐指数
0
解决办法
817
查看次数