2015-10-31 10 views
6

ho dichiarato un'eccezione prevista con Kotlin:Usa ExpectedException con Kotlin

@Rule 
public var exception = ExpectedException.none() 

Ora la mia integrazione test case:

@Test 
@Transactional 
fun authorize_withInvalidToken() 
{ 
    val response = controller.authorize(networkType = "facebook", oauthToken = "", oauthTokenSecret = null) 
    exception.expect(UnauthorizedException::class.java) 

} 

ottengo l'errore:

org.junit.internal.runners.rules.ValidationError: The @Rule 'exception' must be public. 

Is c'è un modo per risolvere questo problema? Per ora mi basta usare manuale try/catch/asserire

risposta

7

annotare la proprietà eccezione con @JvmField:

@Rule 
@JvmField 
var exception = ExpectedException.none() 
+0

Grazie, che funziona. Tuttavia non sono riuscito a ottenere l'eccezione, non so perché. Sono tornato a provare/prendere/affermare. –

+1

La chiamata a exception.expect() deve essere ** prima ** del codice che genera l'eccezione. –

+1

"pubblico" non è necessario qui poiché è l'impostazione predefinita per visibilità campo/proprietà. – Bombe