<junit printsummary="on" fork="yes" forkmode="once"
haltonerror="false" haltonfailure="false"
failureproperty="junit.failure" showoutput="false" maxmemory="1024m">
<classpath>
<path refid="CLASSPATH_JUNIT"/>
<dirset dir="${TEST_BUILD_DIR}"/>
</classpath>
<batchtest fork="no" todir="${TEST_BUILD_DIR}">
<fileset dir="${COMP_TEST_SRC}">
<include name="**/*Test.java" />
<include name="**/Test*.java" />
<exclude name="**/EswTestCase.java" />
</fileset>
</batchtest>
<formatter type="xml" />
</junit>
генерация отчета в формате xml занимает много времени и выдает следующую ошибку:
Caught an exception while logging the end of the build. Exception was:
java.lang.OutOfMemoryError: PermGen space
Почему Genearte XML занимает много времени? Как устранить эту ошибку и заставить приложение работать быстро. У меня есть только максимум 10 тестовых файлов. Я использую командную строку для выполнения скрипта ant.
Анализ:
1) Если я запускаю пакетный тест только для тестовых вызовов, которые расширяют тест Junit, он выполняется очень быстро. например:
открытый класс ImpactsParserTest расширяется
TestCase {..
2) Теперь, если у меня есть тестовый класс, который расширяет тест весеннего джунита как:
открытый класс AddressLookupServiceTest
extends EswTestCase {..
открытый класс EswTestCase расширяется
AbstractDependencyInjectionSpringContextTests {..
это заставляет цель junit работать очень медленно и вызывает ошибку нехватки памяти. почему так происходит?
3) когда я делаю batchtest fork = "yes" вместо no, тогда сборка происходит быстро и не выбрасывает память. Но выдает ошибку вроде:
java.lang.NoClassDefFoundError
at org.apache.log4j.Logger.getLogger(Logger.java:118)
..
java.lang.NoClassDefFoundError: com.bgc.ordering.wizard.back.services.EswTestCase
, хотя я указал эти файл jar и файл класса в элементе classpath как:
и регистратор банок в
<path id="CLASSPATH_JUNIT">
<fileset dir="${BUILD_LIBS_HOME}">
<include name="*.jar" />
</fileset>
<pathelement location="${TEST_CLASSES_DIR}" />
<pathelement location="${TEST_BUILD_DIR}" />
<pathelement location="${COMP_BUILD}" />
<pathelement location="${COMP_CLASSES}" />
<path location="${APP_DIR}\bgc-esw-services\target\classes"/>
<pathelement location="${APP_DIR}\bgc-esw-web\target\classes" />
...
log4j.properties присутствует в ${TEST_BUILD_DIR}
, используя: apache-ant-1.8.1 и junit-3.8.1.jar