问题标签 [kotlinx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 如何在 kotlinx 中比较实际和预期的序列化结果?
注意:我对 Kotlin / JUnit 生态系统完全陌生,所以如果问题缺少基本内容,请多多包涵。
我正在研究基于 JSON 的文件格式。在单元/集成测试中,我想检查序列化是否生成与某些参考 JSON 树完全相同的 JSON 树。特别是我想确保序列化正确处理隐式或显式空值等微妙之处。
我已经以纯文件的形式添加了预期的 JSON.json
作为测试资源,因此我现在可以加载预期 JSON 的字符串内容。我的问题是我的测试用例需要一些相当深/复杂的 JSON 树,如果比较失败,我找不到获得有意义的测试输出的好方法。例如,考虑 JSON 树深处某处只有一个值错误的情况。在 Rust 中,我使用例如rust-pretty-assertions 来解决这些问题:
我已经尝试过这些方法:
基于 的比较
JsonElement
。我基本上使用:不幸的是,如果比较失败,测试输出只包含一行
org.opentest4j.AssertionFailedError: expected: <{ ... long unformatted JSON ...}>
,这使得很难发现断言失败的实际原因。当然这种行为是有道理的,因为如果JsonElement.equals
返回 false,JUnit 只能打印它。直接字符串比较:这当然不是完美的,因为 JSON 树可以相同,即使它们的字符串表示不同。但是我希望对它们进行漂亮的序列化可以让我在 JUnit 中使用某种字符串差异功能。到目前为止,我使用的是 JUnit 的 plain
Assertions.assertEquals(actual, expected)
,不幸的是它只打印了两个字符串,说它们不相等,没有提示它们的不同之处。
kotlinx 或 JUnit 中是否有可以产生易于解释的测试失败输出的功能?
以防万一:我正在使用 JUnit 5,但我愿意接受替代方案。
android - Kotlinx.serialization 中的 Null 或 Empty Object 解析
如何解析这两种类型的响应:
和
进入一个看起来像这样的数据类:
kotlin - 无法使用 Kotlinx 序列化 Protobuf 解码 FloatArray
我正在尝试使用 kotlinx-serialization-protobuf 库版本 1.3.2 在我的 Android 应用程序中解码来自服务器的对象。
该对象有一个 FloatArray 属性:
解码时:
我收到错误:
我很肯定服务器正在将浮点数组发送回 Android 应用程序。我什至可以成功执行逆过程:在 Android 应用程序中对对象进行编码,将其发送到服务器并在服务器中对其进行解码。
顺便说一句,服务器中的对象具有 proto3 格式。
有谁知道为什么会出现这个错误?任何帮助将不胜感激!
谢谢!
csv - Kotlin kotlinx-serialization-csv 多数组列表
有谁知道如何反序列化包含多数组列表的 csv: