我的目标很少,我需要执行.我创建了一个目标,命名所有这些,但我认为这不是这样做的方法吗?以下是调用所有其他目标的目标运行:
<target name="test.all" depends="build
echolaunching agent /echo
antcall target="RunJtfTests" /
antcall target="launchOpenAgent" /
antcall target="run.test" //target
target name="run.test" depends="build, launchOpenAgent, runJtfTests"
echo Launching test/echo
echo message="${toString:iControlSilk4J.classpath}" /
<java classname="com.miranda.icontrol.silk4j.installation.AdministrationCtrl"
classpath><fileset dir="${lib.dir}"
include name="**/*.jar" />
/fileset
pathelement path="${iControlSilk4J.classpath}" /
pathelement location="${jarPath}/Admin.jar" /
/classpath
</java>
</target>
Run Code Online (Sandbox Code Playgroud)
它没有运行,我这样做是为了得到报告而我什么都没得到?怎么了 ?从我读到的,antcall就像一个不好的goto循环.我想打电话给测试.
- >以下是我想要执行的所有测试:
但这可能更通用(关于我将在Silk4J中添加的测试).有没有办法更通用?
在我之后重复:
Ant不是一种编程语言.它是一种依赖矩阵语言.
这是一个重要的区别.你不告诉Ant要执行什么.你告诉Ant你需要什么,Ant会弄明白该怎么做.
我可以告诉你在解决所有这些问题时遇到问题<antcall/>.这是禁忌,因为它可以让你不止一次执行任务.您的构建文件也没有意义.
使用目标的dependency参数.例如,这是一个骨架build.xml文件:
<project>
<target name="clean"/>
<target name="prepare"/>
<target name="compile"
depends="prepare"/>
<target name="package"
depends="compile"/>
<target name="test-compile
depends="compile"/>
<target name="test"
depends="test-compile"/>
<target name="deploy"
depends="package"/>
<target name="post-test-results"
depends="test"/>
<target name="all"
depends="clean,post-test-results,deploy"/>
</project>
Run Code Online (Sandbox Code Playgroud)
当我想运行目标时all,我主要是指我想做一个干净的构建,发布我的测试结果,并部署构建.Makefiles也是如此.我没有列出我的所有任务.我为什么要关心我的编写准备工作?这不是我关心的问题.
所以我呼吁,all以及将调用clean,post-test-results和deploy.除了调用这三个目标之外,我不知道Ant会做什么.
等等......发布测试结果需要做什么?好吧,我可能需要运行我的测试.因此,我依赖test于我的post-test-results目标.但是,为了运行我的测试,我可能需要编译它们.所以,依赖test-compile于我的test目标.
为了编译我的测试,我依赖于常规Java代码.所以,test-compile将取决于compile.为了编译,我必须做好准备.也许这是建立必要的结构,或下载所需的罐子.以前叫过compile.现在,我可以部署.但是,在我可以部署之前,我需要打包我的部署.所以,deploy取决于package.
包装本身取决于compile,但我的也是如此compile-test.因为我已经打过电话compile,所以我的package目标不必这样做.它所要做的就是打包已编译的类文件.
因此,我可能会按此顺序执行以下目标:
我的all目标确实击中了我的所有其他目标,但我不必将它们全部列为依赖项或强制它们通过<antcall/>s 构建.
看起来您需要了解Ant及其工作原理.您的示例Ant文件无效.Ant使用XML样式结构.所有任务都是XML样式实体.
幸运的是,Ant上有很多好书.我会推荐Manning的Ant in Action作为一个很好的起点.
您将发现的一件事是您可以在单个<junit>任务中指定批量的junit测试.这可以通过任务上的一个或多个<batchtest>子实体来<junit>完成.在<batchtest>将运行匹配特定条件的所有进行分类.您还可以<test>在<junit>任务上使用子实体.在<test>子实体允许你指定个别的类文件运行.很多时候,这些类文件可能只是调用一组指定的其他Junit分类.这样,开发人员可以指定要运行的测试和要跳过的测试.
您可以通过使用属性控制要运行或未运行的测试,而不是通过创建许多测试任务来控制.这允许您指定测试集,而不必生成多个JUnit进程.
| 归档时间: |
|
| 查看次数: |
6162 次 |
| 最近记录: |