2016-10-13 25 views
9

Chcę napisać test jednostkowy dla mojego kodu Kotlin i użyć junit/hamcrest matchers, chcę użyć metody is, ale jest to słowo zastrzeżone w Kotlin .Jak skompilować kod testowy jednostki Kotlin, który używa hamcrestu "jest"

Jak mogę skompilować następujące elementy?

class testExample{ 
    @Test fun example(){ 
    assertThat(1, is(equalTo(1)) 
    } 
} 

Obecnie moja IDE, InteliJ jest podkreślić, że jako błąd kompilacji, mówiąc, że spodziewa się ) po is?

Odpowiedz

17

W Kotlin, is jest słowem zastrzeżonym. Aby obejść ten problem trzeba uciec kod za pomocą odwrócone, pojedyncze apostrofy, więc dodaje pozwoli Ci skompilować kod:

class testExample{ 
    @Test fun example(){ 
    assertThat(1, `is`(equalTo(1)) 
    } 
} 
+2

Fuj to okropne .. – Rob

+1

Możesz być w stanie skorzystać z operatora Infix może, aby umożliwić 'assertThat (1 equalTo (1))' .. ale trzeba by pomyśleć trochę. Być może przy połączeniu pewnego stylu pracy DSL dojdziesz do punktu, w którym można napisać 'assertThat {N isEqualTo 1}' ale nie jestem skłonny do wkładania tego wysiłku w ... jeszcze – thecoshman

13

Można aliasu is (powiedzmy do Is) podczas importowania za pomocą słowa kluczowego as.

Np

import org.hamcrest.CoreMatchers.is as Is 

Zobacz https://kotlinlang.org/docs/reference/packages.html

+2

Wciąż musiałbyś odwołać się do 'jest 'funkcja podczas importowania, więc nadal musiałbyś uciec. Ale jest to fajna sztuczka, która pomogłaby ci uniknąć ucieczki z tego miejsca. – thecoshman

+0

To prawda, tylko raz, coś w stylu: import org.hamcrest.CoreMatchers.'is' as Is –

+0

W tym momencie jest to tylko styl. Osobiście wolałbym osobiście uciec od nazwy funkcji. – thecoshman