小编Der*_*son的帖子

使用 Gson 将 JSON 转换为带有对象的 HashMap

在我的 Android 应用程序(用 Kotlin 编写)中,我需要将一些 JSON 转换为 MainObject 哈希映射的字符串。JSON 如下所示:

\n\n
{\n    "a": {\n        "name": "A",\n        "some_int": "2",\n        "some_string": "string",\n        "some_bool": false,\n        "some_string_arr": [\n            "str1",\n            "str2"\n        ],\n        "sub_obj_arr": [\n            {\n                "obj_name": "d",\n                "some_obj_string": "s"\n            }\n        ]\n    },\n    "b": {\n        "name": "B",\n        "some_int": "4",\n        "some_string": "string",\n        "some_bool": false,\n        "some_string_arr": [\n            "str5",\n            "str6"\n        ]\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我创建了几个对象来帮助解决这个问题。

\n\n
class MainObject {\n    @SerializedName("name")\n    val name: String? = null\n\n    @SerializedName("some_int")\n    val someInt: Int? = null\n\n    @SerializedName("some_string")\n    val someString: String? = null\n\n    @SerializedName("some_bool")\n    val someBool: …
Run Code Online (Sandbox Code Playgroud)

java android json gson kotlin

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

UI线程上的单元测试协同程序

我正在使用协同程序在pull上进行异步调用以进行刷新,如下所示:

class DataFragment : Fragment(), SwipeRefreshLayout.OnRefreshListener {

    // other functions here

    override fun onRefresh() {
        loadDataAsync()
    }

    private fun loadDataAsync() = async(UI) {
        swipeRefreshLayout?.isRefreshing = true
        progressLayout?.showContent()

        val data = async(CommonPool) {
            service?.getData() // suspending function
        }.await()

        when {
            data == null -> showError()
            data.isEmpty() -> progressLayout?.showEmpty(null, parentActivity?.getString(R.string.no_data), null)
            else -> {
                dataAdapter?.updateData(data)
                dataAdapter?.notifyDataSetChanged()
                progressLayout?.showContent()
            }
        }

        swipeRefreshLayout?.isRefreshing = false
    }
}
Run Code Online (Sandbox Code Playgroud)

当我把它放在一台设备上时,这里的一切都很好.我的错误,空白和数据状态都处理得很好,性能也很好.但是,我也试图用Spek进行单元测试.我的Spek测试看起来像这样:

@RunWith(JUnitPlatform::class)
class DataFragmentTest : Spek({

    describe("The DataFragment") {

        var uut: DataFragment? = null

        beforeEachTest {
            uut = …
Run Code Online (Sandbox Code Playgroud)

android unit-testing kotlin kotlinx.coroutines

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

标签 统计

android ×2

kotlin ×2

gson ×1

java ×1

json ×1

kotlinx.coroutines ×1

unit-testing ×1