Это время, когда я встретил такую загадочную проблему. У меня есть класс, который ссылается на другой, сидящий в другом пакете в том же приложении, то есть НЕ в другом файле архива jar.
Класс включения learnintouch-отдых/SRC/тест/Java/COM/thalasoft/learnintouch/отдых/прием/AbstractControllerTest.java
Включенный класс /home/stephane/dev/java/projects/learnintouch -rest/src/test/java/com/thalasoft/learnintouch/rest/config/WebTestConfiguration.java
В Eclipse в редакторе нет ошибки и ошибки компиляции.
Но запуск сборки Maven дает ошибку компиляции:
mvn clean test-compile -Pacceptance
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project learnintouch-rest: Compilation failure: Compilation failure:
[ERROR] /home/stephane/dev/java/projects/learnintouch-rest/src/test/java/com/thalasoft/learnintouch/rest/acceptance/AbstractControllerTest.java:[16,46] cannot find symbol
[ERROR] symbol: class WebTestConfiguration
[ERROR] location: package com.thalasoft.learnintouch.rest.config
[ERROR] /home/stephane/dev/java/projects/learnintouch-rest/src/test/java/com/thalasoft/learnintouch/rest/acceptance/AbstractControllerTest.java:[21,116] cannot find symbol
[ERROR] symbol: class WebTestConfiguration
Вот код класса включения:
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@WebAppConfiguration
@ContextConfiguration(classes = {
ApplicationConfiguration.class,
WebSecurityConfig.class,
WebConfiguration.class,
WebTestConfiguration.class
})
public abstract class AbstractControllerTest {
Этот абстрактный тестовый класс находится в каталоге приемочного теста, который требует явной активации профиля -Pacceptance при запуске команды Maven.
Профиль по умолчанию не запускает этот приемочный тест, но только некоторый интеграционный тест.
Следует отметить, что этот абстрактный класс выглядит как один абстрактный класс, используемый в тесте интеграции.
Вот включительный класс теста интеграции:
import com.thalasoft.learnintouch.rest.config.WebTestConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = {ApplicationConfiguration.class},
WebSecurityConfig.class,
WebConfiguration.class,
WebTestConfiguration.class
})
@Transactional
public abstract class AbstractControllerTest {
Как вы можете видеть, он похож на другой.
Я также могу предоставить файл pom.xml, если он может помочь:
<profiles>
<profile>
<id>rest</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<test.source.dir>src/test/java/com/thalasoft/learnintouch/rest</test.source.dir>
</properties>
</profile>
<profile>
<id>acceptance</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<test.source.dir>src/test/java/com/thalasoft/learnintouch/rest/acceptance</test.source.dir>
</properties>
</profile>
</profiles>
Если у вас есть какие-либо подсказки по этому вопросу, мы будем очень благодарны.