gpt4 book ai didi

java - 如何将junit测试分发到另一台机器

转载 作者:行者123 更新时间:2023-12-04 06:46:21 25 4
gpt4 key购买 nike

我们今天拥有的 build.xml 有许多编译和运行单元测试的目标。 build.xml 引用了许多与自身相关的属性文件。当构建和测试在同一台机器上完成时,所有这些都可以正常工作。

将所有 jars 和任何测试输入文件构建到 build_home(另一台机器)非常简单。如何在新位置运行junit?我应该创建小的 build.xml 文件来运行测试吗? (没有办法动态创建ant build.xml) 有什么解决办法吗?

( GridGain 是可能的解决方案。尚未尝试。)

编辑 :为什么这更复杂的模式详细信息:源代码大约为 3G,执行 clearcase 更新和构建需要相当长的时间(40 分钟),而实际测试时间为 60 分钟。我们有很多机器来运行测试——在所有系统上加载 Clearcase 是不可能的。

最佳答案

我理解你的问题,因为你只想在另一台机器上运行 Junit 测试而不实际构建它?你可以在下面的行上运行一些东西作为来自 Cruise control 的构建脚本,也可能是 Hudson

如果您通过 ant 使用任务,则遵循与标准构建相同的原则。您可以从源代码管理中 check out 所有目标机器的代码。

将所有根目录外部化为 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>

关于java - 如何将junit测试分发到另一台机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3726584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com