首页 > 解决方案 > 面向多平台时测试方法名称中的空格

问题描述

我真的很喜欢 Kotlin 为方法名称添加空格的能力,这是一种有据可查的方法,通常用于使测试名称更具可读性

在测试中(并且仅在测试中),可以使用带有反引号的空格的方法名称。(请注意,Android 运行时当前不支持此类方法名称。) ...

class MyTestCase {
    @Test fun `ensure everything works`() { ... }
    ...
}

我在我正在开发的一个针对 JVM 的新库中大力采用了它们。我的测试在 IntelliJ 中显示得很漂亮,一切都很好。

现在,我正在尝试将此库移植为多平台(针对 JVM 和 JavaScript)。当我添加带有空格的测试时,我在 Gradlebuild运行时收到以下 Kotlin 编译器错误compileTestKotlin2Js

名称包含不能出现在 JavaScript 标识符中的非法字符

我应该从我的测试方法中删除所有空格,还是有另一种方法可以两全其美?

另外,关于“Android运行时目前不支持此类方法名称”的限制,这是真正的限制吗?只要我可以在 JVM 上运行测试,我仍然可以使用针对 Android 运行时的测试库(在任何方法中都不包含空格),对吗?

标签: kotlinkotlin-multiplatform

解决方案


对于通用模块或 JavaScript 模块中的测试,您是对的,您将不得不放弃使用反引号的好名称,而使用更传统ensure_everything_works或类似的名称。对于特定于 JVM 的测试,您可以继续使用反引号和空格。

这包括您稍后计划在 Android 上运行的代码的 JUnit 测试。唯一的限制是您不能在实际必须在 Android 环境中运行的测试中使用空格,但是单元测试(我假设 JUnit)在您的开发机器的 JVM 上运行,因此它们仍然可以使用标识符中的空格.


推荐阅读