2010-09-16 35 views
2

我们今天的build.xml有许多编译和运行单元测试的目标。 build.xml引用了许多相对于自身的属性文件。当在同一台机器上完成构建和测试时,所有这些工作都很好。如何将junit测试分发到另一台机器

构建get_jar和任何测试输入文件到build_home(另一台机器)非常简单。如何在新位置上运行junit?我应该创建小的build.xml文件来运行测试吗? (无法动态创建ant build.xml)任何解决方案?

(GridGain是可能的解决办法没试过呢。)

编辑:模式的细节,为什么这更复杂:源代码是围绕3G,做ClearCase的更新和建造花费相当长的时间(40分)对抗junit测试的实际测试时间 - 60分钟。我们有很多机器来运行测试 - 在所有不可能的系统上加载Clearcase。

回答

2

我理解你的问题,因为你只想在另一台机器上运行Junit测试,而无需实际构建它?您可以将下面的行作为Cruise控件的构建脚本,也可能是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是在由

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

导入的build.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> 
+0

您几乎可以说我想要的是不可能对build.xmls进行更改。接受的答案,因为它有足够的解释关于如何构建构建文件。谢谢! – Jayan 2010-09-26 16:29:37

1

尝试克鲁斯控制。这是将构建和单元测试卸载到另一台机器的好方法。

+0

由于单独的文件。巡航控制如何运行测试?我们使用哈德森,所以我可以使用类似的技术。 – Jayan 2010-09-16 12:57:15

+0

Hudwon同样出色。为什么不配置它作为构建的一部分运行测试? – duffymo 2010-09-16 13:33:58

+0

我们这样做。它工作正常。不同的是在哈德森上构建,在另一个上运行测试。我现在看到的方式是让junit在另一个ant文件中运行代码,如junit.xml,并复制“jars”和“testdata”。使用junit.xml运行测试(来自JoseK) – Jayan 2010-09-17 05:37:01

相关问题