假设我们有以下功能要测试
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)
?
我正在玩反应原生.我读了很多关于buckbuild
系统的内容.现在我正在尝试连接这两个(为了充分发挥核素编辑器的潜力).
有没有人知道如何buckconfig
为现有的反应原生项目生成文件?这是否可以自动实现?如果没有,是否有人有一个与buckbuild一起工作的项目并且反应原生?
我也很感激所有关于本地和buckbuild的反馈教程.
在使用 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) 我一直在努力识别内存泄漏.我想我的项目循环进度视图中有几个内存泄漏.
我的一个猜测是内部类中有内存泄漏FadeRunnable
.但说实话,我不确切知道如何确定这是否是问题的根源.好吧,当我按常规方案切换方向时,我看到内存使用量增加,如下所示.如果我注释掉FadeRunnable
该类的用法,步骤会更小(但仍然存在,所以我猜这不是唯一的泄漏)
一旦我分析堆转储,我看到了一些东西.但实际上我不知道这些值是什么意思.我做的事情是
它是否正确?如果是这样,我如何找到保存/保存此对象的转储信息(我猜在下部窗格中的某个位置).
我希望能够逐步解释如何找出是否以及哪个对象泄漏了一些内存.
可以在本课程中找到所有可疑视图的代码.
但是也可以随时查看整个项目以获得更深入的洞察力,以及是否想要玩它.
提前致谢!
上面的代码链接显示了内存泄漏内部类的固定代码.以下代码段显示了永远不应该使用的原始内存泄漏代码
/**
* 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) 使用kotlin使用SLF4J或其他日志记录方法最方便的方法是什么?
通常开发人员忙于样板代码
private val logger: Logger = LoggerFactory.getLogger(this::class.java)
Run Code Online (Sandbox Code Playgroud)
在每个班级中获得适当的记录器?
用Kotlin统一/简化这个的最方便的方法是什么?
我跳进另一个命名空间后,如何访问根命名空间中的函数/变量.
像这样的例子:
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)
如何访问根命名空间?
谢谢
我在使用 Android Studio 的“查看位图”预览功能时遇到问题。我有一个 29000 和高度 255 的位图。但是当我在位图类的调试器中单击“查看位图”时,我看到一个缩小的版本。是的,我知道 29k 宽度很多,但它与 Android Studio < 1.5 一起使用,所以我猜它是某个地方的设置。
这是调试器视图中有关位图的信息
当我单击“查看位图”时,这是位图。
如您所见,尺寸不正确。该调试预览位图比我想看到的要小得多。
任何建议如何解决这个问题?
我正在尝试将 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 测试?
在编写单元测试和嘲笑时,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) 我知道可以记录非致命Exception
或Throwable
崩溃的情况。但现在让我们考虑以下情况。
我们有自定义记录器,它还提供类似的东西SLog.e(String message)
并且只接受字符串消息。现在我们想要跟踪所有这些错误日志作为 crashlyics 的非致命错误。我可以创建一个MyException
并将该错误记录到 crashlytics 中。但这有两个主要缺点:
在 iOS 上,它很简单,因为分组是通过域和错误代码完成的,但在 Android 上,它只是按文件名和行进行分组。
我们如何方便地跟踪 crashlytics 的随机错误,而无需为每个错误日志创建异常类的样板代码。
android ×5
ios ×3
kotlin ×3
java ×2
logging ×2
react-native ×2
xcode ×2
bitmap ×1
buck ×1
crashlytics ×1
debugging ×1
facebook ×1
firebase ×1
gradle ×1
kdb ×1
lambda ×1
memory ×1
memory-leaks ×1
mockito ×1
namespaces ×1
performance ×1
preview ×1
q-lang ×1
slf4j ×1
slf4j-api ×1
swift ×1
unit-testing ×1
xcuitest ×1