2016-10-13 25 views
9

Tôi muốn viết một bài kiểm tra đơn vị cho mã Kotlin của tôi và sử dụng đối sánh junit/hamcrest, tôi muốn sử dụng phương thức is, nhưng nó là một từ dành riêng trong Kotlin .Làm thế nào để biên dịch mã kiểm tra đơn vị Kotlin sử dụng hamcrest 'là'

Tôi làm cách nào để có được những thứ sau để biên dịch?

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

Hiện nay IDE của tôi, InteliJ được làm nổi bật đó như là một lỗi biên dịch, nói rằng nó đang mong đợi một ) sau is?

Trả lời

17

Trong Kotlin, is là từ dành riêng. Để làm được việc này bạn cần phải thoát khỏi các mã sử dụng backticks, vì vậy sau đây sẽ cho phép bạn biên dịch mã:

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

Ugh đó là khủng khiếp .. – Rob

+1

Bạn có thể có thể tận dụng điều hành ghi vào có lẽ để cho phép 'assertThat (1 là equalTo (1)) '.. Nhưng bạn sẽ phải quấn một chút tôi nghĩ. Có lẽ với sự kết hợp của một số công việc phong cách DSL bạn nhận được đến một điểm có thể viết 'assertThat {N isEqualTo 1}' nhưng tôi không có khuynh hướng đặt nỗ lực đó vào ... chưa – thecoshman

13

Bạn có thể bí danh is (nói với Is) Khi bạn nhập bằng cách sử dụng từ khóa as.

Ví dụ:

import org.hamcrest.CoreMatchers.is as Is 

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

+2

Bạn vẫn cần tham chiếu đến 'là 'khi bạn nhập nó, vì vậy bạn vẫn cần phải thoát khỏi nó. Nhưng đây là một mẹo hay giúp bạn thoát khỏi nó khắp nơi. – thecoshman

+0

Đó là sự thật, chỉ một lần, một cái gì đó như: nhập org.hamcrest.CoreMatchers.'is' là Is –

+0

Tại thời điểm đó nó chỉ là một điều phong cách. Cá nhân, tôi muốn thoát khỏi tên chức năng một cách cá nhân. – thecoshman

Các vấn đề liên quan