代码之家  ›  专栏  ›  技术社区  ›  Steven Jeuris

以多平台为目标时测试方法名称中的空格

  •  3
  • Steven Jeuris  · 技术社区  · 8 年前

    我真的很喜欢Kotlin在方法名中添加空格的能力, which is a well-documented approach commonly used to make test names more readable :

    在测试中(并且仅在测试中),可以将方法名与 反勾中的空格(注意,这些方法名是 目前Android运行时不支持。)。。。

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

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

    现在,我想把这个图书馆移植到 multiplatform (targeting both the JVM and JavaScript) . 当我添加一个带有空格的测试时,当Gradle build 跑 compileTestKotlin2Js :

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

    我应该从我的测试方法中删除所有空格,还是有另一种方法可以同时拥有这两个世界的优点?

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

    1 回复  |  直到 8 年前
        1
  •  1
  •   zsmb13    8 年前

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

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