【发布时间】:2018-12-01 11:24:39
【问题描述】:
在《Next Generation Java Testing: TestNG and Advanced Concepts》一书中说“注解是强类型的,所以编译器会立即标记任何错误。”。我知道强类型语言在对其执行操作之前会检查变量的类型,而弱类型语言则不会。此外,强类型语言需要显式转换,而弱类型语言执行隐式转换。那么,这里的“强类型”是什么意思呢?
【问题讨论】:
在《Next Generation Java Testing: TestNG and Advanced Concepts》一书中说“注解是强类型的,所以编译器会立即标记任何错误。”。我知道强类型语言在对其执行操作之前会检查变量的类型,而弱类型语言则不会。此外,强类型语言需要显式转换,而弱类型语言执行隐式转换。那么,这里的“强类型”是什么意思呢?
【问题讨论】:
这本书最有可能尝试做的是区分以下两种方法:
使用方法名称约定来标识测试方法
在(例如)JUnit 3 中就是这种情况,其中测试方法的名称将以test 为前缀(例如testSomeLogic())。这允许测试库区分那些实际被视为测试的方法和其他设置或实用方法。
使用注释来识别测试方法
在 TestNG 和更高版本的 JUnit 中,该方法倾向于使用特定的测试相关注释(例如 @Test)来注释方法。这里的目标是一样的,它允许测试库正确识别测试和其他与测试相关的方法。
使用注解的好处是它们是实际的 Java 类型,并且会被编译器检查。错误使用注解@Tset会导致编译错误,提醒用户注意问题。
编译器无法检测到方法名称中的拼写错误。方法tsetSomeLogic() 将不会被执行,用户将不会察觉。
【讨论】: