Я пытаюсь добавить автоматизацию тестирования JUnit на свой сервер CI. Я разработал все тесты, которые необходимо запустить, и могу запускать их локально из eclipse. Я использую тестовую библиотеку Spring и JUnit4. Я столкнулся с проблемой, пытаясь запустить эти тесты на моем сервере CI. Кажется, муравей не разрешает файлы, отличные от jar, в пути к классам. Мой тестовый класс опирается на applicationContext, который он находит через путь к классам:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="test-config.xml")
@TransactionConfiguration(defaultRollback=true,transactionManager="transactionManager")
public class DAOTest {
Затем этот файл конфигурации контекста ссылается на некоторые файлы sql для загрузки из пути к классам:
<jdbc:embedded-database id="myDataSource" type="HSQL">
<jdbc:script location="tables.sql"/>
<jdbc:script location="testData.sql"/>
</jdbc:embedded-database>
И, наконец, фабрика сеансов Hibernate указывает на файлы hbm.xml, конечно, из пути к классам:
<bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.user_query_cache">false</prop>
<prop key="hibernate.generate_statistics">false</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>resources/com/company/project/data/Session.hbm.xml</value>
<value>resources/com/company/project/data/HistoricalSession.hbm.xml</value>
<value>resources/com/company/project/data/RememberedData.hbm.xml</value>
</list>
</property>
</bean>
Поскольку я не могу предоставить какие-либо из этих вещей в пути к классам для ограничений муравья, у кого-нибудь есть идеи о том, как вы должны подключить эти вещи?
РЕДАКТИРОВАТЬ: Обновление фрагментами из build.xml. Я добавил элемент path для каталога ресурсов, в котором живет все, на что я пытаюсь ссылаться, но еще не заработал.
Мои пути:
<path id="master-classpath">
<pathelement path="${project.classes.dir}" />
<fileset dir="${project.lib.dir}">
<include name="*.jar" />
</fileset>
</path>
<path id="classpath.test">
<path refid="master-classpath"/>
<pathelement path="${project.test.dir}"/>
<fileset dir="${project.testLibs.dir}">
<include name="*.jar"/>
</fileset>
<pathelement path="resources"/>
</path>
Цель теста:
<target name="do-test" if="execute.tests">
<pathconvert property="classpathProperty" refid="classpath.test"/>
<echo>Classpath is ${classpathProperty}</echo>
<delete dir="results"/>
<mkdir dir="results"/>
<mkdir dir="results/report"/>
<junit printsummary="yes" showoutput="yes" fork="true" failureproperty="test.failed">
<classpath refid="classpath.test"/>
<formatter type="xml"/>
<batchtest todir="results">
<fileset dir="${project.test.dir}">
<include name="**/*.java"/>
</fileset>
</batchtest>
<test name="com.company.project.test.DAOTest" todir="results"/>
</junit>
<junitreport todir="results/report">
<fileset dir="results" includes="*.xml"/>
<report todir="results/report"/>
</junitreport>
<fail message="test failed" if="test.failed"/>
</target>
The failure that I see each time is always "classpath resource [file] cannot be opened because it does not exist"