Java 从Ant运行JUnit时遇到问题

Java 从Ant运行JUnit时遇到问题,java,ant,junit,Java,Ant,Junit,以下是我用来运行测试的目标: <target name="run-tests" description="run the tests" depends="compilation"> <junit> <sysproperty key="tests.basedir" value="${SPECIAL_PATH}/unit_tests"/> <classpath>

以下是我用来运行测试的目标:

<target name="run-tests" description="run the tests" depends="compilation">
        <junit>
            <sysproperty key="tests.basedir" value="${SPECIAL_PATH}/unit_tests"/>
            <classpath>
                <pathelement location="${COMPILED_CLASSES}"/>
                <pathelement location="${basedir}/junit-4.8.1.jar"/>
            </classpath>
            <batchtest>
                <fileset dir="${COMPILED_CLASSES}/unit_tests/">
                    <include name="**/Test*.class"/>
                    <exclude name="**/*$*"/>
                </fileset>
            </batchtest>
        </junit>
    </target>
特殊路径
属性指向类的源代码。
COMPILED_CLASSES
属性指向放置
.class
文件的位置。我需要
tests.basedir
属性,因为我从单元测试中使用它

我做错了什么


编辑:我还认为我应该解释一下
$
的排除。我排除了匿名类,因为它们不代表测试用例,它们只从它们中使用。

您告诉Junit在
${COMPILED\u classes}/unit\u tests/
中执行每个测试类,但您只是将
${COMPILED\u classes}
放在类路径上。您可能需要将类路径条目更改为

<pathelement location="${COMPILED_CLASSES}/unit_tests/"/>

您告诉Junit执行
${COMPILED_CLASSES}/unit_tests/
中的每个测试类,但您只是将
${COMPILED_CLASSES}
放在类路径上。您可能需要将类路径条目更改为

<pathelement location="${COMPILED_CLASSES}/unit_tests/"/>


您可能需要编译UnitTests。您可以在哪里发布您使用javac任务吗?

您可能需要编译UnitTests。您能在哪里发布您使用javac任务吗?

因为您的CLAPATH

${COMPILED_CLASSES}
你的考试班在

${COMPILED_CLASSES}/unit_tests
它们需要打包

unit_tests.<whatever the classpath is>
单元测试。

传统上,这就是为什么人们将普通源代码编译成目标/类,并将测试源代码编译成目标/测试类的原因

${COMPILED_CLASSES}
你的考试班在

${COMPILED_CLASSES}/unit_tests
它们需要打包

unit_tests.<whatever the classpath is>
单元测试。

传统上,这就是为什么人们将普通源代码编译成目标/类,将测试源代码编译成目标/测试类的原因

Java不应该自动下降到该文件夹中吗?如果我有20个测试包,我需要将它们全部添加到classpath?@Geo文件夹中,它需要从包根开始。目前junit认为类应该是unit_tests.testpackage.TestMyClass而不是testpackage。TestMyClass@Kevin,我尝试自己运行一个类,使用
test
任务,它运行正常。它使用的类路径与我发布的相同。有什么想法可以解释为什么会这样吗?发布一个有效的配置可能会有帮助,以找出为什么原始配置不起作用。Kevin,根据您对
unit\u tests.testpackage.TestMyClass
package建议的评论,我让它起作用了。当我只在文件集上放置
编译类时,它就起作用了。如果你想写一个答案,我会标记它。Java不应该自动下降到那个文件夹中吗?如果我有20个测试包,我需要将它们全部添加到classpath?@Geo文件夹中,它需要从包根开始。目前junit认为类应该是unit_tests.testpackage.TestMyClass而不是testpackage。TestMyClass@Kevin,我尝试自己运行一个类,使用
test
任务,它运行正常。它使用的类路径与我发布的相同。有什么想法可以解释为什么会这样吗?发布一个有效的配置可能会有帮助,以找出为什么原始配置不起作用。Kevin,根据您对
unit\u tests.testpackage.TestMyClass
package建议的评论,我让它起作用了。当我只在文件集上放置
编译类时,它就起作用了。如果你愿意写一个答案,我会记下来的。