测试已弃用的 Scala 函数时如何抑制弃用警告?
How to suppress deprecation warnings when testing deprecated Scala functions?
假设我有一个库,其中包含一个已弃用的函数和一个首选函数:
object MyLib {
def preferredFunction() = ()
@deprecated("Use preferredFunction instead", "1.0") def deprecatedFunction() = ()
}
我想在 ScalaTest 中测试 preferredFunction
和 deprecatedFunction
:
class MyLibSpec extends FreeSpec with Matchers {
"preferred function" in {
MyLib.preferredFunction() should be(())
}
"deprecated function" in {
MyLib.deprecatedFunction() should be(())
}
}
但是,在 MyLib.deprecatedFunction()
处报告了弃用警告。
如何避免警告?
Scala 不支持,请参阅 https://groups.google.com/forum/#!topic/scala-internals/LsycMcEkXiA
但是提到了一个插件:
https://github.com/ghik/silencer
我没用过 - 所以我不确定这是否适合你的情况。
只需弃用 class,它由测试装置以反射方式实例化。
scala> @deprecated("","") def f() = ()
f: ()Unit
scala> @deprecated("","") class C { f() }
defined class C
scala> f()
<console>:13: warning: method f is deprecated:
f()
^
Scala 2.13.2 和 2.12.13 添加了对本地抑制编译器警告的支持。
https://www.scala-lang.org/2021/01/12/configuring-and-suppressing-warnings.html
现在你可以@nowarn("cat=deprecation")
假设我有一个库,其中包含一个已弃用的函数和一个首选函数:
object MyLib {
def preferredFunction() = ()
@deprecated("Use preferredFunction instead", "1.0") def deprecatedFunction() = ()
}
我想在 ScalaTest 中测试 preferredFunction
和 deprecatedFunction
:
class MyLibSpec extends FreeSpec with Matchers {
"preferred function" in {
MyLib.preferredFunction() should be(())
}
"deprecated function" in {
MyLib.deprecatedFunction() should be(())
}
}
但是,在 MyLib.deprecatedFunction()
处报告了弃用警告。
如何避免警告?
Scala 不支持,请参阅 https://groups.google.com/forum/#!topic/scala-internals/LsycMcEkXiA
但是提到了一个插件:
https://github.com/ghik/silencer
我没用过 - 所以我不确定这是否适合你的情况。
只需弃用 class,它由测试装置以反射方式实例化。
scala> @deprecated("","") def f() = ()
f: ()Unit
scala> @deprecated("","") class C { f() }
defined class C
scala> f()
<console>:13: warning: method f is deprecated:
f()
^
Scala 2.13.2 和 2.12.13 添加了对本地抑制编译器警告的支持。
https://www.scala-lang.org/2021/01/12/configuring-and-suppressing-warnings.html
现在你可以@nowarn("cat=deprecation")