我使用的是JDK 1.7,eclipse 4.2.2、JUnit 4.8.1、ant 1.9.2、windows8 64位**。当我运行build.xml时,所有目标都运行良好,但名称为run的目标运行不佳。
<?xml version="1.0" encoding="UTF-8"?>
<project name="AntExample" default="setclasspath" basedir=".">
<!-- Properties Initialization -->
<property environment="env"/>
<property name="ws.home" value="${basedir}" />
<property name="ws.jar" value="${basedir}/lib" />
<property name="test.dest" value="${basedir}/build" />
<property name="test.src" value="${basedir}/src" />
<property name="test.reportsDir" value="E:\Reports" />
<!-- Path Initialization -->
<path id="testcase.path">
<pathelement location="${ws.jar}"/>
<pathelement path="${classes}"/>
<fileset dir="${ws.jar}">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- Target Setclasspath -->
<target name="setclasspath" unless="testcase.path">
<path id="classpath_jars">
<fileset dir="${ws.jar}">
<include name="**/*.jar"/>
</fileset>
</path>
<pathconvert pathsep=";" property="testcase.path" refid="classpath_jars"/>
</target>
<!-- Target init -->
<target name="init" depends="setclasspath">
<condition property="ANT"
value="${env.ANT_HOME}/bin/ant.bat"
else="${env.ANT_HOME}/bin/ant">
<os family="windows"/>
</condition>
</target>
<!-- Target clean -->
<target name="clean">
<delete dir="${test.dest}"/>
</target>
<!-- Target compile -->
<target name="compile" depends="init,clean">
<delete includeemptydirs="true" quiet="true">
<fileset dir="${test.dest}">
<include name="**/*"/>
</fileset>
</delete>
<mkdir dir="${test.dest}"/>
<javac debug="true"
destdir="${test.dest}"
srcdir="${test.src}"
target="1.7"
classpath="${testcase.path}"/>
</target>
<!-- Target run -->
<target name="run" >
<delete includeemptydirs="true" quiet="true">
<fileset dir="${test.reportsDir}">
<include name="**/*"/>
</fileset>
</delete>
<mkdir dir="${test.reportsDir}"/>
<java jar="${ws.jar}" fork="yes" spawn="yes"/>
<junit fork="yes" haltonfailure="no" printsummary="yes" >
<classpath refid="testcase.path" />
<batchtest todir="${test.reportsDir}" fork="true">
<fileset dir="${test.dest}">
<include name="anttestcase/Login.class"/>
</fileset>
</batchtest>
<formatter type="xml"/>
</junit>
<junitreport todir="${test.reportsDir}">
<fileset dir="${test.reportsDir}">
<include name="TESTS-*.xml"/>
</fileset>
<report todir="${test.reportsDir}"/>
</junitreport>
</target>
</project>`
当我使用命令提示符运行生成时,我得到以下错误:
C:\Users\Ashish Rathore\workspace\AntExample>ant run
buildfile:C:\users\Ashish Rathore\workspace\antexample\build.xml
运行:[junit]警告:在junit[junit]
jar:file://h://ant1.9/apache-ant-1.9.2-bin/apache-ant-1.9.2/lib/ant.jar!/org/apache/tools/ant/project.class[junit]和jar:file://c://users/ashish%20rathore/workspace/antexample/lib/ant.jar!/org/apache/tools/ant/project.class[junit]运行anttestcase.login[junit]测试运行:1,失败:0,错误:1,跳过:0,在[junitreport]将E:\reports\tests-testsuites.xml处理到C:\users\ashish~1\ap pdata\local\temp\null1158960870[junitreport]加载样式表jar:file://h://ant1.9/apache-ant-1.9.2-bin/apache-ant-1.9.2/lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/frames.xsl[junitreport]失败时,[junitreport]转换时间:1223ms[junitreport]
生成成功总时间:5秒
我的报表中test-antTestCase.login.xml中的错误消息
error type="java.lang.ClassNotFoundException" message="anttestcase.Login">
java.lang.ClassNotFoundException: anttestcase.Login at
java.net.URLClassLoader$1.run(URLClassLoader.java:366) at
java.net.URLClassLoader$1.run(URLClassLoader.java:355) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(URLClassLoader.java:354) at
java.lang.ClassLoader.loadClass(ClassLoader.java:423) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at
java.lang.ClassLoader.loadClass(ClassLoader.java:356) at
java.lang.Class.forName0(Native Method) at
java.lang.Class.forName(Class.java:188)
package anttestcase;
import junit.framework.Assert;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ErrorCollector;
public class Login {
@Rule public ErrorCollector errCollector=new ErrorCollector();
@BeforeClass public static void setUp() throws Exception {
System.out.println("opening Url");
}
@AfterClass public static void tearDown() throws Exception {
}
@Test public void enterCredentials() {
try {
Assert.assertEquals("A", "B");
System.out.println("Enter Username and Password");
} catch(Throwable t) {
errCollector.addError(t);
System.out.println("Caught");
}
}
@Test public void authenticityCheck() {
System.out.println("Login Successfully");
}
}
必须将编译后的类添加到junit任务的类路径中。
<junit fork="yes" haltonfailure="no" printsummary="yes" >
<classpath>
<path refid="testcase.path">
<pathelement location="${test.dest}"/>
</classpath>
<batchtest todir="${test.reportsDir}" fork="true">
<fileset dir="${test.dest}">
<include name="anttestcase/Login.class"/>
</fileset>
</batchtest>
<formatter type="xml"/>
</junit>
在Github上有一个示例ant项目,它使用JUnit:https://Github.com/mplacona/java-junit-template-project查看它的build.xml
。
问题内容: 我试图在Eclipse中使用Ant构建项目。我右键单击build.xml>运行方式> Ant Build。但是,我收到以下错误: 还有一个警告: 正如我在其他文章中所读到的那样,这可能是由于ant版本太旧或未正确设置环境变量所致,这里是所有信息: 编辑:这是整个build.xml,第26行是javac标记: 问题答案: 与您的Eclipse版本捆绑在一起的Ant版本与Java 1.8不
当我在命令行中输入Ant时。。我犯了以下错误。。 找不到工具。罐子应该可以在C:\Program Files\Java\jre6\lib\tools中找到。jarbuildfile:build。xml不存在!构建失败
我得到了一个错误
问题内容: 在定义顺序构建步骤时,我使用元素的属性。我最近看到了一个ant文件,其中的构建顺序是由目标内部的元素定义的。为了显示 : 与 两种方法之间是否有真正的区别?是其中之一更可取吗? 问题答案: 与这两种方法的主要区别在于目标是 始终 执行,而在目标只有在包含目标是执行。 一个澄清的例子: 在这里,将始终执行,而只有在定义时才会执行。 在此,仅当is即定义时才执行。
问题内容: 我将一个Java程序的开发环境放在一起,并且在尝试使用Ant构建脚本进行第一次尝试后,出现了以下错误: 尽管通往jdk的路径是正确的,但tools.jar确实不存在。它实际上应该在那里吗?还是我弄错了一些配置/安装的东西? 问题答案: 它在我的机器上。我在Windows XP SP3上运行Sun JDK 1.6.0_21。 您确定您拥有JDK吗?是否只有JRE?
问题内容: 我正在尝试运行ant任务,但是出现以下错误: 我尝试使用谷歌搜索来查找如何设置此值,但找不到。我努力了 我努力了 但我仍然遇到同样的例外。我尝试将值成功增加到1024m 更新资料 我解决了 它与很少的内存无关。在我的javadoc一代中,这是一个无休止的循环。 问题答案: 我解决了 它与很少的内存无关。在我的javadoc一代中,这是一个无休止的循环。 为ant设置更多内存的正确方法是