Kotlin Multiplatform 使用测试单元

编写常见的测试代码

现在您有了一个基于字符串的 API,可以通过它进行基本的测试。

1、在公共的测试模块中创建一个 org.jetbrains.base64 包

2、在新包下面创建 Base64Test.kt文件

3、在文件中添加代码

bash 复制代码
package org.jetbrains.base64


import com.example.myapplication.org.jetbrains.base64.Base64Factory
import kotlin.test.Test
import kotlin.test.assertEquals

class Base64Test {
    @Test
    fun testEncodeToString() {
        checkEncodeToString("Kotlin is awesome", "S290bGluIGlzIGF3ZXNvbWU=")
    }

    @Test
    fun testPaddedStrings() {
        checkEncodeToString("", "")
        checkEncodeToString("1", "MQ==")
        checkEncodeToString("22", "MjI=")
        checkEncodeToString("333", "MzMz")
        checkEncodeToString("4444", "NDQ0NA==")
    }

    private fun checkEncodeToString(input: String, expectedOutput: String) {
        println("checkEncodeToString:${input}   ${Base64Factory.createEncoder().encodeToString(input.asciiToByteArray())}")
        assertEquals(expectedOutput, Base64Factory.createEncoder().encodeToString(input.asciiToByteArray()))
    }

    private fun String.asciiToByteArray() = ByteArray(length) {
        get(it).code.toByte()
    }
}

4、打开终端命令,进入工程的根目录,执行checkGradle 任务:

bash 复制代码
./gradlew check

测试将在所有平台(JVM、JS 和 Native)上运行。

添加在安卓平台的测试

1、到安卓公共模块测试目录添加 org.jetbrains.base64 包

2、在新包下面创建 Base64Test.kt文件

3、将测试代码添加到 文件中

bash 复制代码
package org.jetbrains.base64

import kotlin.test.Test
import kotlin.test.assertEquals

class Base64JvmTest {
    @Test
    fun testNonAsciiString() {
        val utf8String = "Gödel"
        val actual = Base64Factory.createEncoder().encodeToString(utf8String.toByteArray())
        assertEquals("R8O2ZGVs", actual)
    }
}

添加iOS 平台测试

1、到iOS公共模块测试目录添加 org.jetbrains.base64 包

2、在新包下面创建 Base64Test.kt文件

3、将测试代码添加到 文件中

bash 复制代码
package org.jetbrains.base64

import com.example.myapplication.org.jetbrains.base64.Base64Factory
import kotlin.test.Test


class Base64IOSTest {

    @Test
    fun testString() {
        val utf8String = "Gödel"
        val actual = Base64Factory.createEncoder().encodeToString(utf8String.encodeToByteArray())
        println("actual: ${actual}")
        assertEqualss("//+2ZGVs", actual)
    }

    private fun assertEqualss(expected: Any?, actual: Any?) {
        if (expected != actual) {
            throw AssertionError("Expected $expected, but got $actual")
        }
    }
}

注意如果想要在安卓和iOS平台都想添加测试模块,需要在配置文件中添加才可以使用。

bash 复制代码
  val androidUnitTest by getting {
            dependencies {
                implementation(kotlin("test"))
            }
        }

        val iosTest by getting {
            dependencies {
                implementation(kotlin("test"))
            }
        }

这里有一个问题,同一个字符串,安卓base后和ios的出现不一致。

相关推荐
Mr YiRan2 小时前
网络请求API监控与网络切换埋点
android·网络
美狐美颜sdk5 小时前
直播APP开发技术栈详解:视频美颜SDK、人脸识别与实时渲染
android·人工智能·音视频·美颜sdk·直播美颜sdk
君顾16 小时前
上海24小时自助健身房系统开发实战指南:从架构设计到落地部署
java·开发语言·健身房
香菜TTT6 小时前
大模型上下文协议(MCP):AI 应用的“USB-C”接口技术
开发语言·人工智能·经验分享
aramae6 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
jimy17 小时前
readelf 查看“派生类”的vtable符号
开发语言·c++
ctlover8 小时前
排序与查找算法详解
开发语言·python
YYYing.8 小时前
【C++进阶系列 (七)】C++ RTTI 深度剖析:从 typeid 到 dynamic_cast 的底层之旅
开发语言·c++·c/c++·rtti
nvvas9 小时前
Java 入门(四):数组——数据的集合管理
java·开发语言
Y38153266210 小时前
SERP 数据清洗实战:字段标准化、日期解析与去重键
开发语言·数据库·python·python数据库