Как распространить тесты Junit на другую машину - PullRequest
2 голосов
/ 16 сентября 2010

В build.xml, который у нас есть сегодня, есть много целей для компиляции и запуска модульных тестов. Build.xml ссылается на множество файлов свойств относительно себя. Все это прекрасно работает, когда сборка и тестирование выполняются на одной машине.

Довольно просто сделать build, чтобы получить все jar-файлы и любые тестовые входные файлы в build_home (другой компьютер). Как запустить джунит на новом месте? Нужно ли создавать небольшие файлы build.xml для запуска тестов? (Нет способа создать ant build.xml динамически). Какие-нибудь решения?

(GridGain является возможным решением. Еще не пробовал.)

Редактировать : подробности в режиме, объясняющие, почему это сложнее: исходный код находится в области 3G, обновление и сборка открытого регистра занимает значительное время (40 минут), а реальное время тестирования Junit - 60 минут. У нас есть много машин для запуска тестов - загрузка Clearcase на всех системах невозможна.

Ответы [ 2 ]

2 голосов
/ 16 сентября 2010

Я понимаю ваш вопрос, так как вы хотите запускать тесты Junit только на другой машине, фактически не опираясь на нее?Вы можете запустить что-то в строках ниже как сценарии сборки из Cruise control и, возможно, тоже из Hudson

Если вы используете задачу через ant, следуйте тем же принципам, что и стандартная сборка.Вы можете получить код для всех целевых машин из системы управления версиями.

Вывести все корневые каталоги в файл build.properties.Это свойства, которые должны быть установлены на каждой машине следующим образом.

#Overall Project Name
project.name=myapp

# Top Level Root directory of the new working project
toplevel.project.dir=D:/proj/eComm

# Root directory of the source code
root.project.dir=D:/proj/eComm/Construction

# JDK home directory 
jdk.home=C:/jdk1.5.0_11

build.properties также будет иметь некоторые статические свойства, определенные относительно вышеупомянутых.Они не должны быть изменены любым пользователем на любом локальном компьютере.

ear.dist.dir = ${root.project.dir}/target
src.dir     = ${root.project.dir}/src
test.src.dir = ${root.project.dir}/test

Убедитесь, что ваш build.xml ссылается только на любые дополнительные подкаталоги через эти свойства без каких-либо жестко закодированных значений в нем.Мой junit находится в отдельном файле, который импортируется в build.xml

<import file="${root.project.dir.buildscripts.dir}/junit.xml"/>

, и некоторая часть junit.xml показана ниже

<target name="run.junit" depends="clean.junit, junit.info, prepare.junit"
    description="Compiles and runs all JUnit Tests in the 'test' directory and produces a report of all failures">

<junit printsummary="yes" fork="true" haltonfailure="no" showoutput="yes" maxmemory="512m">
      <jvmarg line="${junit.jvm.arg}"/>
      <classpath>
        <fileset dir="${src.dir}">
          <include name="**/*.*"/>
        </fileset>
        <fileset dir="${ear.dist.dir}/build/classes">
          <include name="**/*.*"/>
        </fileset>
         <pathelement path="${test.run.path}"/>
      </classpath>
      <formatter type="xml"/>
      <batchtest fork="true" todir="${ear.dist.dir}/build/junit">
      <fileset dir="${test.src.dir}" includes="${test.pattern.include}"/>
      </batchtest>
    </junit>

</target>
1 голос
/ 16 сентября 2010

Попробуйте круиз-контроль.Это отличный способ перенести вашу сборку и юнит-тест на другую машину.

...