<path refid="bin.classpath"/>
<target name="run-unit-tests" depends="init" description="Runs all the unit tests">
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="jacocoant.jar" />
</taskdef>
<manifestclasspath property="binjar" jarfile="binManifest.jar">
<classpath refid="bin.classpath" />
</manifestclasspath>
<jar destfile="manifestJars/binManifest.jar">
<manifest>
<attribute name="Class-Path" value="${binjar}" />
</manifest>
</jar>
<jacoco:coverage destfile="results/jacoco.exec" xmlns:jacoco="antlib:org.jacoco.ant">
<junit fork="true" reloading="false" showoutput="true">
<classpath>
<pathelement path="${projects.dir}/AntProject/manifestJars/binManifest.jar" />
</classpath>
<batchtest todir="${test.data.dir}" fork="true">
<fileset dir="${projects.dir}/ProjectFolder1/src" />
<fileset dir="${projects.dir}/ProjectFolder2/src" />
</batchtest>
</junit>
</jacoco:coverage>
</target>
如果我在运行ant-task时查看控制台日志,我可以看到新的.jar文件是如何发送的:
-classpath''C:\Users\XXX\Project\AntProject\manifestJars\binManifest.jar;
如果打开创建的binmanifest.jar,我会发现一个manifest.mf文件,其中包含Class-Path属性中的所有路径,格式为:../../class1/bin../../class2/bin../../classn/bin。但是由于某些原因,我的所有测试都失败了,因为我的类找不到。我错过了什么?谢了。
下面是一个完整且可验证的示例,它使用JUnit fork=“true”
和Manifestclasspath
。
main/example.java
:
class Example {
public static void sayHello() {
System.out.println();
}
}
test/exampletest.java
:
public class ExampleTest {
@org.junit.Test
public void test() {
Example.sayHello();
}
}
<project xmlns:jacoco="antlib:org.jacoco.ant" default="build">
<target name="build">
<delete dir="bin" />
<mkdir dir="bin/main-classes" />
<mkdir dir="bin/test-classes" />
<javac target="1.5" debug="true" destdir="bin/main-classes">
<src path="main" />
</javac>
<javac target="1.5" debug="true" destdir="bin/test-classes">
<src path="test" />
<classpath>
<pathelement path="bin/main-classes"/>
<pathelement path="lib/junit-4.12.jar"/>
<!-- otherwise "java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing" -->
<pathelement path="lib/hamcrest-core-1.3.jar"/>
</classpath>
</javac>
<manifestclasspath property="binjar" jarfile="bin/manifest.jar">
<classpath>
<pathelement path="bin/main-classes"/>
<pathelement path="bin/test-classes"/>
<pathelement path="lib/junit-4.12.jar"/>
<!-- otherwise "java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing" -->
<pathelement path="lib/hamcrest-core-1.3.jar"/>
</classpath>
</manifestclasspath>
<jar destfile="bin/manifest.jar">
<manifest>
<attribute name="Class-Path" value="${binjar}" />
</manifest>
</jar>
<junit fork="true" showoutput="true">
<formatter type="brief" usefile="false" />
<classpath>
<pathelement path="bin/manifest.jar" />
</classpath>
<batchtest>
<fileset dir="test" includes="**/*Test.java" />
</batchtest>
</junit>
</target>
</project>
让我们通过执行Ant
来确认它在没有异常的情况下工作。
在添加JaCoCo后通过添加
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="jacocoant.jar" />
</taskdef>
到开头,
<jacoco:coverage destfile="bin/jacoco.exec" xmlns:jacoco="antlib:org.jacoco.ant">
...
</jacoco:coverage>
<jacoco:report>
<executiondata>
<file file="bin/jacoco.exec"/>
</executiondata>
<structure name="JaCoCo Ant Example">
<classfiles>
<fileset dir="bin/main-classes"/>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="main"/>
</sourcefiles>
</structure>
<html destdir="bin/report"/>
</jacoco:report>
我想通过html显示Jmeter结果。html仪表板信息不够丰富,所以我想使用ant解决方案。 < li >我按预期安装了ant < li >我将testplan.jmx复制到C:\ Jmeter _ 4.0 \ Apache-Jmeter-4.0 \ extras < li >我将testplan.jmx更改为Test.jtl < li >我进入了cmd CD C:\ Jmeter _ 4.0
问题内容: 这是我到目前为止的内容: 但是我猜这个错误: 我尝试使用以下方法指定项目: 但是没有运气。 指定的ant文件是正确的,因为它可以从命令行正常运行。 更新 经过更多搜索后,我到达了这里:http : //onjava.com/pub/a/onjava/2002/07/24/antauto.html?page=1 这是一个很棒的教程。 这是我在下面的答案中看到代码之前得到的代码: 但是由于
我是一名承包商,他们正在使用MyEclipse 10.0和Ant进行构建。自从我使用Ant作为构建工具以来已经有很长时间了,因为我主要在Maven上已经有一段时间了。 它们的源代码被分解为多个项目,每个项目都链接回一个具有公共构建的公共项目。由每个项目的构建导入的xml。xml。ant脚本用于与应用程序作战,并使用WebLogic基于java的部署工具在本地和测试环境上进行部署。他们使用的是Web
问题内容: 是否可以从Jenkins执行我的QUnit(javascript)单元测试?我的构建脚本是Apache Ant。Jenkins是将其作为单独的构建步骤执行,还是需要在Ant构建脚本的配置中添加一些内容? 问题答案: 因此,我终于设法弄清楚了。 这是我的端到端实施: 安装PhantomJS(http://phantomjs.org/)-我将其安装在build / tools文件夹中 安装
问题内容: 我的程序正在获取命令行参数。使用Ant时如何通过? 问题答案: 扩展了Richard Cook的答案。 这是运行任何程序(包括但不限于Java程序)的任务: 这是从文件运行Java程序的任务: 您可以像这样从命令行调用: 确保使用语法;如果运行此命令: 然后将尝试运行目标和。