编写常见的测试代码
现在您有了一个基于字符串的 API,可以通过它进行基本的测试。
1、在公共的测试模块中创建一个 org.jetbrains.base64 包
2、在新包下面创建 Base64Test.kt文件
3、在文件中添加代码
package org.jetbrains.base64import com.example.myapplication.org.jetbrains.base64.Base64Factory
import kotlin.test.Test
import kotlin.test.assertEqualsclass Base64Test {@Testfun testEncodeToString() {checkEncodeToString("Kotlin is awesome", "S290bGluIGlzIGF3ZXNvbWU=")}@Testfun 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 任务:
./gradlew check
测试将在所有平台(JVM、JS 和 Native)上运行。
添加在安卓平台的测试
1、到安卓公共模块测试目录添加 org.jetbrains.base64 包
2、在新包下面创建 Base64Test.kt文件
3、将测试代码添加到 文件中
package org.jetbrains.base64import kotlin.test.Test
import kotlin.test.assertEqualsclass Base64JvmTest {@Testfun 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、将测试代码添加到 文件中
package org.jetbrains.base64import com.example.myapplication.org.jetbrains.base64.Base64Factory
import kotlin.test.Testclass Base64IOSTest {@Testfun 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平台都想添加测试模块,需要在配置文件中添加才可以使用。
val androidUnitTest by getting {dependencies {implementation(kotlin("test"))}}val iosTest by getting {dependencies {implementation(kotlin("test"))}}
这里有一个问题,同一个字符串,安卓base后和ios的出现不一致。