我在自己的API中使用DeprecationLevel.ERROR:
@Deprecated(
message = "moved to def()",
replaceWith = ReplaceWith(expression = "def()"),
level = DeprecationLevel.ERROR)
fun abc() = def()
我想要测试以确保呼叫者看到此替换。例如,如果不小心删除了abc()
方法,我的测试应该无法编译。
但是我找不到方法进行编译:
@Test
@Suppress("something")
fun deprecatedAbc() {
abc()
}
例如,@Suppress("DEPRECATION")
不起作用。有事吗?
答案 0 :(得分:1)
根据@Deprecated
的{{3}}:
为帮助逐步删除已弃用的API,可以使用属性级别。通常,逐步淘汰过程包括“警告”,“错误”,“隐藏”或“删除”阶段:
- 首先,默认情况下,
DeprecationLevel.WARNING
用于通知API使用方,但不中断其编译或运行时使用情况。- 然后,过一会儿,弃用级别将提高到
DeprecationLevel.ERROR
,,因此无法使用弃用的API来编译新的Kotlin代码。
代码并非按设计编译,并且@Suppress
仅禁止显示警告,而不显示错误(请参见documentation)。
因此,您无法实现的目标。另外,在我看来,似乎您正在测试Kotlin功能,而不是业务逻辑。您可以改为尝试测试替代产品的行为。
答案 1 :(得分:0)
根据DefaultErrorMessages
,您可以使用@Suppress("DEPRECATION_ERROR")
。