2015-10-02 5 views
8

В Котлин M13, это было приемлемым способом создать правило JUnit:Котлин JUnit Правила

@Rule @publicField val temp = TemporaryFolder()

@publicField Теперь, устарел, как еще это может быть достигнуто? В подсказке IDE предлагается заменить @publicField на lateinit, но lateinit val не разрешены, и я не уверен, что это поможет, даже если бы они были.

ответ

-3

Просто угадать, но следующий может работать (с var):

@Rule lateinit var temp = TemporaryFolder() 

Я хотел бы попробовать просить у Котлин-х слабину http://t.co/xpQXUKaDvP В настоящее время это самый быстрый способ, чтобы исправить что-либо.

+0

Это не так, JUnit не видит temp в качестве поля в этом случае, потому что это не поле. Там есть скрытое поле поддержки, и трюк будет заключаться в том, как применить к нему аннотацию. – jkschneider

+0

Извините, @jkschneider, вы действительно проверили его на работу? Потому что согласно документам он создает поле и должен делать трюк. К сожалению, я не работаю с JUnit. – voddan

12

Ответ в Котлин 1.0 выглядит следующим образом:

@Rule @JvmField val temp = TemporaryFolder() 

@JvmField выставляет поле подложки с такой же видимостью как собственность, Ergo открытое поле для правила JUnit для использования.

Смежные вопросы