如何根据运行的jar的结果让我的ant任务通过或失败?

时间:2009-05-25 16:46:10

标签: java ant

我正在运行CrossCheck(无浏览器js单元测试)作为ant脚本的一部分。如果CrossCheck测试失败,我想让ant报告失败。这是build.xml中的相关位

<target name="test" depends="concat">
    <java jar="src/test/lib/crosscheck.jar" fork="true">
        <arg value="src/test/webapp/js/"/>
    </java>

CrossCheck失败消息的一个例子:

 [java] Running tests in environment: Mozilla 1.7 (Firefox 1.0)
 [java] org.mozilla.javascript.EcmaError: ReferenceError: "clusterNode" is not defined. (ResultXMLWrapperTest.js#22)
 [java]     at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3229)
 [java]     at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3219)
 [java]     at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3292)
 [java]     at org.mozilla.javascript.ScriptRuntime.nameOrFunction(ScriptRuntime.java:1636)
 [java]     at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1575)
 [java]     at org.mozilla.javascript.gen.c1._c1(ResultXMLWrapperTest.js:22)
 [java]     at org.mozilla.javascript.gen.c1.call(ResultXMLWrapperTest.js)
 [java]     at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:340)
 [java]     at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2758)
 [java]     at org.mozilla.javascript.gen.c1.call(ResultXMLWrapperTest.js)
 [java]     at net.thefrontside.crosscheck.framework.AbstractScopeFactory$1.run(AbstractScopeFactory.java:108)
 [java]     at org.mozilla.javascript.Context.call(Context.java:515)
 [java]     at org.mozilla.javascript.Context.call(Context.java:450)
 [java]     at net.thefrontside.crosscheck.framework.AbstractScopeFactory.initTestScope(AbstractScopeFactory.java:94)
 [java]     at net.thefrontside.crosscheck.framework.DefaultScopeFactory.getTestScope(DefaultScopeFactory.java:68)
 [java]     at net.thefrontside.crosscheck.framework.TestCase$1.run(TestCase.java:119)
 [java]     at org.mozilla.javascript.Context.call(Context.java:528)
 [java]     at org.mozilla.javascript.Context.call(Context.java:450)
 [java]     at net.thefrontside.crosscheck.framework.TestCase.run(TestCase.java:117)
 [java]     at net.thefrontside.crosscheck.framework.TestSuite.run(TestSuite.java:95)
 [java]     at net.thefrontside.crosscheck.framework.Crosscheck.runAll(Crosscheck.java:116)
 [java]     at net.thefrontside.crosscheck.framework.ConsoleRunner.run(ConsoleRunner.java:140)
 [java]     at net.thefrontside.crosscheck.framework.ConsoleRunner.main(ConsoleRunner.java:300)
 [java] ReferenceError: "clusterNode" is not defined. (ResultXMLWrapperTest.js#22)
 [java] Java Result: 1

蚂蚁能否得到CrossCheck测试的结果(也许Java结果:1会被传递回ant?)并基于此成功或失败?

2 个答案:

答案 0 :(得分:14)

假设CrossCheck在错误上返回非零返回码,您可以将failonerror属性添加到java任务中:

<target name="test" depends="concat">
    <java jar="src/test/lib/crosscheck.jar" fork="true" failonerror="true">
        <arg value="src/test/webapp/js/"/>
    </java>

请参阅Ant java task上的文档。

答案 1 :(得分:1)

您可以使用'java'任务的'failonerror'属性。

  

failonerror停止构建过程if   该命令以返回码退出   除0以外。默认为“false”(参见   注释)

查看Ant手册here

相关问题