Почему «внутренние» типы в главном дереве исходных текстов не видны в моих модульных тестах? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть проект Kotlin в IntelliJ, который имеет следующую структуру:

  • main / com / foo / Bar.kt
  • test / com / foo / BarTest.kt

, где Bar определяется как:

internal class Bar

и BarTest выглядит примерно так:

class BarTest {
    private lateinit var bar: Bar
}

Я получаю ошибки компиляторав IntelliJ по ссылке на Bar с сообщением:

Невозможно получить доступ к «Bar»: это внутреннее в «com.foo»

Тесты, однако, скомпилируйте и запустите из командной строки (через Gradle).

Как я могу подавить / удалить эту ошибку при использовании IntelliJ?

Моя настройка:

  • macOS 10.14.1
  • IntelliJ 2018.2.6
  • Kotlin 1.3.10

1 Ответ

0 голосов
/ 19 ноября 2018

Я открыл два проекта одновременно, используя одну и ту же установку IntelliJ:

  • - прежний проект, в котором я смог провести модульное тестирование класса internal, расположенного в исходном дереве main (всев пределах того же модуля IntelliJ)
  • текущий проект, в котором я не смог воспроизвести эту настройку

Тот факт, что IntelliJ по-прежнему не выдавал ошибок в предыдущей установке, привел менячтобы заключить, что проблема не была связана с моей настройкой IntelliJ.Как предложил @JaysonMinard, я посмотрел на различия в конфигурации Gradle.

Разница была в верхнем уровне текущего проекта settings.gradle, я использую соглашение о переименовании модулей, например:

findProject(':module-blah')?.name = 'blah'

... для того, чтобы ссылаться на мои проекты Gradle по более коротким именам, в то время как их список был последовательно расположен в браузере моего проекта (а не разбросан по другим файлам в алфавитном порядке).Удаление этого ярлыка восстановило поведение, которое я искал в своих модульных тестах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...