Por favor, leia a atualização abaixo.
Problemas semelhantes descritos por JustACluelessNewbie ocorrem no IntelliJ IDEA. O problema é que dependência testCompile project(':core').sourceSets.test.output
realmente significa: "depende de classes geradas pela tarefa de construção de gradle". Portanto, se você abrir um projeto limpo, onde as classes ainda não são geradas, o IDEA não as reconhecerá e reportará erros.
Para corrigir esse problema, você deve adicionar uma dependência nos arquivos de origem de teste ao lado da dependência nas classes compiladas.
// First dependency is for IDEA
testCompileOnly files { project(':core').sourceSets.test.java.srcDirs }
// Second is for Gradle
testCompile project(':core').sourceSets.test.output
Você pode observar dependências reconhecidas pela IDEA em Configurações do módulo -> Dependências (escopo do teste) .
Btw. Como não é uma solução agradável, vale a pena considerar a refatoração. O próprio Gradle possui um subprojeto especial contendo apenas classes de suporte de teste. Consulte https://docs.gradle.org/current/userguide/test_kit.html
Atualizar 2016-06-05
Mais Estou pensando em uma solução proposta menos que eu goste. Existem alguns problemas com isso:
- Ele cria duas dependências no IDEA. Um aponta para testar fontes outro para classes compiladas. E é crucial em que ordem essas dependências são reconhecidas pela IDEA. Você pode brincar alterando a ordem das dependências em Configurações do módulo -> guia Dependências.
- Ao declarar essas dependências, você está poluindo desnecessariamente a estrutura de dependências.
Então, qual é a melhor solução? Na minha opinião, está criando um novo conjunto de fontes personalizadas e colocando classes compartilhadas nele. Na verdade, os autores do projeto Gradle fizeram isso criando o conjunto de fontes testFixtures.
Para fazer isso, basta:
- Crie um conjunto de fontes e adicione as configurações necessárias. Verifique esse plugin de script usado no projeto Gradle: https://github.com/gradle/gradle/blob/v4.0.0/gradle/testFixtures.gradle
Declare a dependência apropriada no projeto dependente:
dependencies {
testCompile project(path: ':module-with-shared-classes', configuration: 'testFixturesUsageCompile')
}
- Importe o projeto Gradle para o IDEA e use a opção "criar módulo separado por conjunto de fontes" durante a importação.