2013-09-24 4 views
12

У меня проблема с тестированием maven и JUnit.junit test следует использовать main/resources

У меня есть файлы в src/main/resources и при запуске тестов junit я хочу эти файлы. Только один тестовый файл с немного разными настройками должен отменять соответствующий файл. Итак, моя идея состояла в том, чтобы дать этому тестовому файлу то же имя, что и основной файл, и поместить его в файл src/test/resources в том же (соответствующем) месте, что и основной файл. Но теперь у меня есть проблема, что я не могу использовать все остальные файлы из src/main/resources.

Я думал, что они будут тестировать junit по умолчанию в целевые/тестовые классы/при запуске, основанных на файлах из src/test/resources, но это не так. Существует только файл из src/test/resources, а не другой.

Спасибо за любые идеи, как я мог решить эту проблему.

здесь пример того, как я пытаюсь получить доступ к файлам

'

@BeforeClass 
public static void globalSetUp() throws NamingException, SQLException { 
    System.setProperty("solr.solr.home", "/solr/"); 

    cores = new CoreContainer(
      "/home/foo/workspace/reporting/target/test-classes/solr"); 
    cores.load(); 
    server = new EmbeddedSolrServer(cores, "reporting"); 

    loadDriver(); 
    connection = createAndConnectToDB(); 
    createDBSchema(); 

} 

'

+1

Вы до сих пор не дали нам достаточно информации. Попробуйте отправить код, чтобы показать, как вы пытаетесь загрузить эти файлы. –

+0

Я отредактировал мой inital пост, показывая, как я ссылаюсь на файлы в src/main/resources. Спасибо за ваши thoghts! – MrLang

+0

Я не вижу ничего похожего на файлы в '/ src/main/resources' –

ответ

19

Проблема была в pom.xml. /main/resources не был как testResource.

Вот фрагмент кода, который решить мою проблему:

<build> 
    <testResources> 
     <testResource> 
     <directory>${project.basedir}/src/test/resources</directory> 
     </testResource> 
     <testResource> 
     <directory>${project.basedir}/src/main/resources</directory> 
     </testResource> 
    </testResources> 
</build> 
+6

Может быть, абсолютные пути здесь не самая лучшая идея? –

3

На самом деле и есть/доступны. Файлы в src/main/resources и src/test/resources. Однако при загрузке файлов из пути к классам любой файл в src/test/resources имеет приоритет над файлами в src/main/resources.

Это сложно полностью ответить на ваш вопрос, так как вы не указали много деталей (используете ContextConfiguration? Если нет, как вы загружаете файлы), но я бы предположил, что вы используете другое имя и загружаете этот файл явно в одном тесте, который ему нужен.

Вы также можете иметь то же имя, но тогда всем другим тестам потребуется явно использовать путь src/main/resources для загрузки файла по умолчанию.

+0

Спасибо, но из-за отсутствия неизвестной причины моих файлов из src/main/resources нет. Должно быть цельное ядро ​​solr и некоторые файлы конфигурации, например. но их просто нет, когда я запускаю тест. Почему-то я должен что-то не так о свойствах проекта, настройках maven или ...? Любая идея, что может вызвать это? – MrLang