Dav*_*ope 6 junit backticks kotlin
Kotlin/JUnit 宣传使用反引号函数名称进行测试。我发现您还可以使用反引号的类名......
但我找不到任何参考。这是 Kotlin 规范中的某些内容,还是只是一个“可能很快就会消失”的意外功能?
代码示例:
@Nested
inner class `when the entity path only specifies one location` {
@BeforeEach
fun setup() {
entity = Entity(
id = "entityid1",
name = "entity1",
type = "type",
team = TeamColor.BLUE,
currentLocation = Location(0.0, 10.0, 0.0),
path = EntityPath(
startTime = "00:00:00",
timeLocation = listOf(
TimeLocation("00:00:00", Location(0.0, 10.0, 0.0)),
)
),
)
}
@Test
fun `it returns the first (only) location`() {
val actualLocation = entityLocator.getEntityLocation(entity, calculation);
val expectedLocation = Location(0.0, 10.0, 0.0)
assertEquals(actualLocation, expectedLocation);
}
}
Run Code Online (Sandbox Code Playgroud)
反引号是通用语言语法的一部分:在任何可以编写名称的地方(无论是函数、类、属性、变量还是其他),都可以将其放在反引号中并包含几乎任何字符(换行符或反引号除外)他们自己)。
\n(最初的用例可能是为了与与 Kotlin 关键字同名的 Java 方法进行互操作,例如System.out; 但它更普遍有用,如您引用的测试所示。)
它记录在语言语法本身 \xe2\x80\x94 的定义中Identifier\xe2\x80\x94 中,因此它是该语言的预期部分,并且不太可能消失!
更新:
\n但是,尽管 Kotlin 保证支持所有标识符的反引号,但这是否意味着您应该选择需要它们的名称? \xe2\x80\x82 在大多数情况下,不建议这样做。
\n您可能会看到它们的两个主要地方是:
\n来自 Java 标准库或其他 Java 库的方法、字段和包在 Java 中有效,但在 Kotlin 中无效 \xe2\x80\x94 通常是因为它们是 Kotlin 中的保留字。\xe2\x80\x82(例如:System.out和 Mockito 的when方法。)\xe2\x80\x82Backticks 对于这些当然是必要的,因为没有其他方法可以从 Kotlin 访问它们。
单元测试中的方法名称,如本问题所示。\xe2\x80\x82这是一个风格问题。\xe2\x80\x82有些人喜欢嵌入空格和标点符号的长方法名称,它们描述了正在测试的内容简单的英语;他们还喜欢看起来与正在测试的代码明显不同的测试方法。\xe2\x80\x82其他人发现它们丑陋、笨拙且难以阅读。
正如 gotube 所说,Kotlin 编码约定特别允许测试方法名称带有空格。\xe2\x80\x82 但他们不要求它;如果你愿意,你可以自由地遵循通常的约定。\xe2\x80\x82并且它们只允许使用方法名称,而不是类、对象、包、属性或局部变量的名称\xe2\x80\x94,所以最好坚持所有其他标识符的常用约定,即使在编写测试时也是如此。