Supongamos que tengo una biblioteca, que contiene una función en desuso y una función preferida:

object MyLib {
  def preferredFunction() = ()
  @deprecated("Use preferredFunction instead", "1.0") def deprecatedFunction() = ()
}

Quiero probar tanto preferredFunction como deprecatedFunction en ScalaTest:

class MyLibSpec extends FreeSpec with Matchers {
  "preferred function" in {
    MyLib.preferredFunction() should be(())
  }
  "deprecated function" in {
    MyLib.deprecatedFunction() should be(())
  }
}

Sin embargo, se informa una advertencia de desactivación en MyLib.deprecatedFunction().

¿Cómo evitar la advertencia?

3
Yang Bo 16 oct. 2018 a las 17:22

2 respuestas

La mejor respuesta

Scala no admite eso, consulte https://groups.google.com / forum / #! topic / scala-internals / LsycMcEkXiA

Sin embargo, se menciona un complemento:

https://github.com/ghik/silencer

No lo he usado, así que no estoy segura de si esto funciona para su caso.

2
pme 16 oct. 2018 a las 15:06

Simplemente desapruebe la clase, que es instanciada de forma reflexiva por el banco de pruebas.

scala> @deprecated("","") def f() = ()
f: ()Unit

scala> @deprecated("","") class C { f() }
defined class C

scala> f()
<console>:13: warning: method f is deprecated:
       f()
       ^
3
som-snytt 16 oct. 2018 a las 15:39