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);
}
}
2条答案
按热度按时间guykilcj1#
反勾号是通用语言语法的一部分:在任何你可以写名字的地方(无论是函数、类、属性、变量还是其他什么),你都可以把它放在反勾号中,并且包括几乎所有的字符(除了换行符或者反勾号本身)。
(The最初的用例可能是为了与具有与Kotlin关键字相同名称的Java方法的互操作性,例如
System.out
;但它更普遍地有用,如您引用的测试所示。)它被记录在language grammar本身中--在
Identifier
的定义中--所以它是语言的一个预定部分,而且不可能消失!更新:
但是,尽管Kotlin保证 * 支持 * 所有标识符的反勾号,这是否意味着您应该选择需要反勾号的名称? 在大多数情况下,不建议这样做。
您可能会在以下两个主要位置看到它们:
System.out
和Mockito的when
方法。) 当然,对于这些方法,反勾是必需的,因为没有其他方法可以从Kotlin访问它们。正如gotube所说,Kotlin编码约定特别允许测试方法名称带有空格, 但它们并不要求这样做;如果你愿意的话,你可以自由地遵循通常的约定。 它们只允许方法名使用,而不允许类、对象、包、属性或局部变量的名称使用--所以最好对所有其他标识符都遵循通常的约定,即使在编写测试时也是如此。
nom7f22z2#
Kotlin编码约定指定反勾号仅用于测试:
试验方法名称
在测试中(且仅在测试中),您可以使用方法名称,并将空格括在反勾号中。