2015-10-02 12 views
8

In Kotlin M13, questo era un modo accettabile per creare una regola di JUnit:Kotlin Regole JUnit

@Rule @publicField val temp = TemporaryFolder()

Ora che @publicField è stato deprecato, altrimenti come può questo essere realizzato? L'suggerimento IDE suggerisce di sostituire @publicField con lateinit, ma i valori di lateinit val non sono più consentiti e non sono sicuro che ciò sarebbe di aiuto anche se lo fossero.

risposta

-3

solo indovinare, ma quanto segue potrebbe funzionare (con var):

@Rule lateinit var temp = TemporaryFolder() 

proverei a chiedere al di Kotlin slack http://t.co/xpQXUKaDvP Attualmente è il modo più veloce per risolvere nulla.

+0

In questo caso, JUnit non vede il campo temporaneo come campo, perché in realtà non è un campo. C'è un campo nascosto nascosto da qualche parte, e il trucco sarà come applicarvi un'annotazione. – jkschneider

+0

Mi spiace, @jkschneider, l'hai effettivamente controllato? Perché secondo i documenti crea un campo e dovrebbe fare il trucco. Sfortunatamente non lavoro con JUnit da solo. – voddan

12

La risposta al Kotlin 1.0 è il seguente:

@Rule @JvmField val temp = TemporaryFolder() 

@JvmField espone il campo di supporto con la stessa visibilità come la proprietà, ergo un campo pubblico per la regola JUnit da usare.